我有一個使用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