我有一个使用symfony 1.4(我认为它使用的是教条1.2)的教条的一个小问题。我有2个查询,在mysql控制台中使用raw 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();
如果我删除了两个连接,它会更改查询,但结果集是相同的。 但是使用doctrine execute(),只产生一行。
有人对这里发生了什么有个想法吗?
PS:图片表有ID,标题,文件,created_at(格式 'Y-M-d H:I:S'),标签表ID,名称和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
现在它返回零行XD 我想我解决了它...除了substr(),它需要表的另一列。使用select(substr(),a.created_at)使其工作(现在) – Leprosy 2010-03-19 19:32:41
确认...它正在工作...:P – Leprosy 2010-03-19 19:41:00
遇到过一些我认为是由此问题导致并解决它的问题 - 现在我知道!钽 – benlumley 2010-03-20 00:27:35