2011-04-16 73 views
4

我如何獲得這個工作?沒有加入Kohana的表格3.1 ORM

$stuff = ORM::factory('mytable') 
    ->with('user') 
    ->with('other_stuff') 
    ->find_all(); 

我已經得到了我所有的關係,而且所有的似乎是工作,當我做其他查詢。但是,在上面的查詢中,它沒有加入表用戶mytable。我想這可能是因爲一個mytable可能會有很多用戶。

在參考有一個叫join()我認爲我可能需要在這裏使用的方法,但他們不給它任何信息,我搜索過關於這裏的東西確實不行。

當我嘗試使用join而不是with時,它試圖加入表格,但它不包含任何「加入」信息,只是給出了一個空的()

我知道我的ORM數據庫關係都設置正確,所以我有點困惑。

回答

5

Kohana有不錯的文檔,沒有找到正確的地方是...好,你的問題。

ORM::with()用於加載一個對一個(屬於並有一個)關係,但你把所有的Database_Query_Builder方法與您的處置ORM使用方法:

$stuff = ORM::factory('mytable') 
     ->join('users','LEFT') 
     ->on('users.mytable_id','=','mytables.id') 
     ->find_all(); 
+0

就是這樣。我錯過了' - > on()'的東西。 /嘆。我沒有意識到你可以在ORM中使用DB Query Builder方法。我正在學習Kohana,並且在文檔中沒有任何關於這個的!但現在我知道了,我非常感謝你的幫助! -Brian – DondeEstaMiCulo 2011-04-16 09:04:22

+0

快速跟進問題...我從所有「with」表中獲得正確的DB結果,但沒有從「joined」表中得到。除了其他人之外,如何從用戶表中獲取一個字段的數據?謝謝。 – DondeEstaMiCulo 2011-04-16 10:38:35

+2

- > select('joined_table。*') – Kemo 2011-04-16 11:04:35

1
SELECT * from table1 
LEFT JOIN table2 
ON table1.id = table2.id 
AND table2.flag = 'Y' 
AND table2.siteid = '12' 
WHERE table1.siteid = '12' 

如何以上查詢是以kohana的ORM格式編寫的?以下是否正確

$stuff = ORM::factory('table1') 
    ->join('table2','LEFT') 
    ->on('table1.id','=','table2.id') 
    ->on('table2.flag','=','Y') 
    ->on('table2.siteid', '=', '12') 
    ->where('table1.id', '=', '12') 
    ->find_all();