搜索关系数据

时间:2015-04-30 13:33:44

标签: php activerecord yii yii2

这一定是显而易见的事情,但是我已经挣扎了一个多小时。

我有deviceslaboratoriesusers个表格。每个设备都通过laboratory绑定到lab_id,每个实验室都通过users绑定到user_id。每个设备只与一个实验室绑定,每个用户都可以绑定到许多实验室。

我想显示当前用户绑定到的所有实验室中的所有设备。我想,这将简单如下:

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

但是这失败了,错误,没有lab.user_id这样的列。我错过了什么?

1 个答案:

答案 0 :(得分:4)

如果您想在查询中使用相关数据,则只需使用joinWith()代替with()

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