【发布时间】:2010-03-19 19:02:47
【问题描述】:
我对使用 symfony 1.4 的教义有一点问题(我认为它使用的是 1.2 教义)。我有 2 个查询,在 mysql 控制台中使用原始 sql,它们产生相同的结果集。可以使用以下代码生成查询:
$dates = Doctrine::getTable('Picture')
->createQuery('a')
->select('substr(a.created_at,1,10) as date')
->leftjoin('a.PictureTag pt ON a.id = pt.picture_id')
->leftjoin('pt.Tag t ON t.id = pt.tag_id')
->where('a.created_at <= ?', date('Y-m-d 23:59:59'))
->orderBy('date DESC')
->groupby('date')
->limit(ITEMS_PER_PAGE)
->offset(ITEMS_PER_PAGE * $this->page)
->execute();
如果我删除这两个连接,它会更改查询,但结果集是相同的。 但是使用学说 execute(),只产生一行。
有人知道这里发生了什么吗?
PS:图片表有id、title、file、created_at(格式'Y-m-d h:i:s'),Tag表是id、name和PictureTag是一个有id和两个外键的关系表。
PS 2:这是生成的两个 sql 查询(第一个没有连接)
SELECT substr(l.created_at, 1, 10) AS l__0 FROM lupa_picture l WHERE (l.created_at <= '2010-03-19 23:59:59') GROUP BY l__0 ORDER BY l__0 DESC LIMIT 4
SELECT substr(l.created_at, 1, 10) AS l__0 FROM lupa_picture l LEFT JOIN lupa_picture_tag l2 ON (l.id = l2.picture_id) LEFT JOIN lupa_tag l3 ON (l3.id = l2.tag_id) WHERE (l.created_at <= '2010-03-19 23:59:59') GROUP BY l__0 ORDER BY l__0 DESC LIMIT 4
【问题讨论】: