$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中有这三个非常相似的拍卖,但我不确定我是否能以某种方式缩短它。我不喜欢这么多重复,所以也许有人可以给我一个提示。
答案 0 :(得分:1)
首先,除非您真的想减少此页面的查询总数,否则我不会担心这三个查询过多。 starts_at和ends_at上的索引可能有助于加快速度,但取决于这些表中的记录数。
现在唯一想到的就是做一个查询,返回开始和结束日期,然后将PHP foreach循环中的那些解析为你需要的三个组。这会将查询从3减少到1,但会增加一些PHP开销。如果你在那里有数百或数千个拍卖,这可能不是一个好主意。