2015-04-30 71 views
2

這一定是顯而易見的事情,但我一個多小時都在苦苦掙扎。搜索關係數據

我有devices,laboratoriesusers表。每個設備通過lab_id綁定到laboratory,每個實驗室通過user_id綁定到users。每個設備只綁定到一個實驗室,每個用戶可以綁定到許多實驗室。

我想顯示當前用戶綁定到的所有實驗的所有設備。我想,這將是簡單的:

$query = Device::find()->with('lab')->where($[ 
    'lab.user_id' => Yii::$app->user->id 
]); 

但這種失敗,錯誤,不存在爲lab.user_id沒有這樣的列。我錯過了什麼?

+0

哪些是'Device'實驗室的關係函數的名稱? – topher

+0

關係名稱爲'lab'(關係函數名稱爲'getLab'),表名稱爲'labs'。 – trejder

回答

4

如果你想在你的查詢中使用相關數據,你只需要使用joinWith()代替with()

$query = Device::find()->joinWith('lab')->where([ 
    Laboratory::tableName() . '.user_id' => Yii::$app->user->id 
]); 
+0

關係名稱爲'lab'(關係函數名稱爲'getLab'),表名稱爲'labs'。謝謝,我會在週末之後回到辦公室後檢查一下。 – trejder