我是新來的Doctrine,但有點熟悉SQL。我有一個非常簡單的用戶和挑戰模式。每個挑戰都有一個「挑戰者ID」和一個「對手ID」,它們是外鍵進入用戶表。我想打印所有挑戰的列表,輸出是用戶表中的名稱。這是我的學說查詢;只有返回一行的原則查詢?
$q = Doctrine_Query::create()
->select('u1.name challenger, u2.name opponent')
->from('Challenge c')
->leftJoin('c.Challenger u1')
->leftJoin('c.Opponent u2');
問題是這隻返回一行。我用getSqlQuery()命令來查看生成的SQL這最終是:
SELECT u.name AS u__0, u2.name AS u2__1 FROM challenge c
LEFT JOIN user u ON c.challenger_id = u.id
LEFT JOIN user u2 ON c.opponent_id = u2.id
預期當第三方SQL客戶端運行此查詢檢索所有行。任何想法如何從Doctrine獲得所有行?我使用的是$q->execute()
,我知道它應該適用於多行。
謝謝。
嘗試$ q-> count()並查看它得到的行數。另外,使用 _dev.php來訪問查詢。運行後,單擊數據庫並查看它實際正在運行的查詢。我不確定這與getSqlQuery()會返回什麼不同。 –
gregghz
2010-10-04 00:41:33
謝謝。 $ q-> count()暴露了查詢返回了正確數量的結果,並且我需要閱讀正確使用DoctrineCollection對象。這超出了我的問題的範圍,所以我會將其關閉。 – LVB 2010-10-04 01:02:49
太棒了,歡迎您將我的評論標記爲「很棒」的評論;) – gregghz 2010-10-04 02:28:51