Можно ли сократить эти запросы доктрины? - PullRequest
0 голосов
/ 14 июля 2011
    $q_auctions = Doctrine_Query::create()
       ->select('COUNT(t.id) AS num_items')
       ->from('Auctions t')
       ->where('t.ends_at > NOW()');

    $q_auctions_upcoming = Doctrine_Query::create()
       ->select('COUNT(t.id) AS num_upcoming')
       ->from('Auctions t')
       ->where('t.starts_at > NOW()');

    $q_auctions_closed = Doctrine_Query::create()
       ->select('COUNT(t.id) AS num_closed')
       ->from('Auctions t')
       ->where('t.ends_at < NOW()');

У меня есть 3 очень похожих аукциона в Доктрине, но я не уверен, смогу ли я как-нибудь сократить их.Мне не очень нравится повторяться, поэтому, может быть, кто-нибудь даст мне совет.

1 Ответ

1 голос
/ 15 июля 2011

Прежде всего, я бы не стал беспокоиться о трех запросах, если вы действительно не пытаетесь сократить общее количество запросов для этой страницы. Индексы Start_at и End_at могут помочь ускорить процесс, но зависит от количества записей в этих таблицах.

Единственное, что сейчас приходит на ум, - это сделать один запрос, вернуть даты начала и окончания, а затем разбить их внутри цикла foreach PHP на три нужные вам группы. Это отбросит запросы с 3 до 1, но добавит некоторые накладные расходы на PHP. Если у вас есть сотни или тысячи аукционов, это может быть плохой идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...