Какой подход лучше и быстрее — Symfony2, Doctrine2Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Какой подход лучше и быстрее — Symfony2, Doctrine2

Сообщение Anonymous »

У меня есть несколько связанных объектов, скажем, для удобства Продукт и Категория. Они связаны OneToMany и ManyToOne. (каждый продукт имеет одну категорию, а одна категория содержит много продуктов)

Моя цель — отобразить в шаблоне все категории со всеми их продуктами, но в алфавитном порядке. Например так:

Мебель
  • Кровать
  • Диван
  • ТВ
Обед
  • Банан
  • Рыба
  • Лимон


    Офис
  • Бумага
  • Ручка
  • Ручка
  • Ручка
    li>
Я хочу, чтобы и категории, и товары были отсортированы.

Итак:

Подход 1

Напишите запросы с доктриной, чтобы упорядочить все категорииПо имени ASC и чтобы получить все заказанные товары по названию ASC, а затем в шаблоне:

Код: Выделить всё

{% for c in all_categories %}

{{ c.name }}

{% for p in all_products %}
{% if p.category == c %}
{{ p.name }}
{% endif %}
{% endfor %}

{% endfor %}
Подход 2

Получайте только категории, независимо от того, как они упорядочены. Измените выборку на нетерпеливую. Затем напишите фильтр сортировки в виде расширения Twig, например:

Код: Выделить всё

public function sortByName($a, $b)
{
if($a->getName() === $b->getName()) {
return 0;
}
if($a->getName() < $b->getName()) {
return -1;
}
return 1;
}
и используя итератор и uasort() с этой функцией, а затем в шаблоне:

Код: Выделить всё

{% for c in all_categories|sortbyname %}

{{ c.name }}
{% for p in c.products|sortbyname %}
{{ p.name }}
{% endfor %}

{% endfor %}
Я вижу, что в 1 проверка if неверна, поскольку многие проверки будут избыточными. И получать все товары, когда у меня уже есть все категории, тоже избыточно. Но я думаю, что сортировка с помощью Doctrine должна быть быстрее, чем с расширением twig. Поэтому я не могу сказать, какой из них мне следует использовать. Если это имеет значение, то в моем случае у меня есть 3 объекта, например: у каждого магазина есть категории, и в каждой категории есть товары.

Можете ли вы мне помочь? Заранее большое спасибо! :)

Подробнее здесь: https://stackoverflow.com/questions/183 ... -doctrine2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»