是否有可能缩短这些学说查询?

时间:2011-07-14 16:08:19

标签: doctrine

    $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()');

我在Doctrine中有这三个非常相似的拍卖,但我不确定我是否能以某种方式缩短它。我不喜欢这么多重复,所以也许有人可以给我一个提示。

1 个答案:

答案 0 :(得分:1)

首先,除非您真的想减少此页面的查询总数,否则我不会担心这三个查询过多。 starts_at和ends_at上的索引可能有助于加快速度,但取决于这些表中的记录数。

现在唯一想到的就是做一个查询,返回开始和结束日期,然后将PHP foreach循环中的那些解析为你需要的三个组。这会将查询从3减少到1,但会增加一些PHP开销。如果你在那里有数百或数千个拍卖,这可能不是一个好主意。