2010-06-21 89 views
0

我想在特定ID的2個表之間進行連接。目前,我有這個DQL:學說加入DQL

$q = Doctrine_Query::create() 
     ->select('e.*, i.itemName, i.itemtypeId') 
     ->from('Model_EventItem e') 
     ->leftJoin('Model_Item i ON e.itemId = i.itemId') 
     ->where('e.eventitemId = ?', $event->eventId) 
     ->orderBy('i.itemName ASC'); 

結果是空的,雖然我的EVENTID具有價值......你能幫助我嗎?我在哪裏有關於DQL連接的教程?在Doctrine文檔的幫助下我沒有把握。

謝謝!

PS我有學說與Zend框架結合工作。

+1

是'在DQL上使用'execute()'函數之後$ q'空了嗎?因爲你的問題中的這個查詢不會對數據庫做任何事情。 – DrColossos 2010-06-21 16:37:51

+0

的確,我必須執行.... BUt查詢是否正確? – koko 2010-06-21 18:12:50

+0

嘗試' - > leftJoin(e.Model_Item i)''ON''子句由Doctrine添加到您的映射中。有關更多示例,請查看http://www.doctrine-project.org/projects/orm/1.2/docs/manual/dql-doctrine-query-language/en#join-syntax – DrColossos 2010-06-22 08:03:22

回答

1

你需要使用的關係

$q = Doctrine_Query::create() 
    ->select('e.*, i.itemName, i.itemtypeId') 
    ->from('Model_EventItem e') 
    ->leftJoin('Model_EventItem.Model_Item i') 
    ->where('e.eventitemId = ?', $event->eventId) 
    ->orderBy('i.itemName ASC'); 
+0

好吧,但我怎樣才能添加模型之間的關係?我不知道...從未做過 – koko 2010-06-25 09:01:33

+0

您可以在yaml模式中定義關係,或者在(基礎)模型的setUp方法中自己實現它們 – 2010-08-05 20:59:59

0
$q = Doctrine_Query::create() 
    ->select('e.*, i.itemName, i.itemtypeId') 
    ->from('Model_EventItem e, e.Model_Item i') 
    ->where('e.eventitemId = ?', $event->eventId) 
    ->orderBy('i.itemName ASC'); 
+0

我的關係中有一些錯誤架構... 此錯誤彈出:消息:未知的關係別名Model_Item – koko 2010-06-22 12:42:12

+0

是的,最好檢查一下。學說模型通常是用駱駝案例而不是下劃線書寫的。 – Tom 2010-06-22 14:12:00

1

你應該在左側更改名稱的關係添加到模型中,並加入表連接從Model_EventIteme

$q = Doctrine_Query::create() 
    ->select('e.*, i.itemName, i.itemtypeId') 
    ->from('Model_EventItem e') 
    ->leftJoin('Model_EventItem.Model_Item i') 
    ->where('e.eventitemId = ?', $event->eventId) 
    ->orderBy('i.itemName ASC');