如何根据关系表中的条件获取一组数据?
在Yii 1中,我可以使用with()
和'on'
语句。这在Yii 2中不起作用,或者我找不到任何好的例子。
例如在Yii 1中我可以这样写:
$criteria = new CDbCriteria();
$criteria->with = array('works'=>array('on' => 'works.user_id=t.id AND (works.work_id=$SOMEVALUE OR ...)'));
我试过这样的事情(userRight
是我的关系):
Foo::find()->with(['userRight'=>['on'=>['user_r'=>$this->id]]]);
Yii 2中有没有解决方案?
答案 0 :(得分:1)
来自官方的例子:
$orders = Order::find()->innerJoinWith([
'customer' => function ($query) {
$query->where('customer.created_at > ' . (time() - 24 * 3600))
->onCondition(['category_id' => 1]);
}
])->all();
请参阅this link
答案 1 :(得分:0)
如果你的表中有关系并使用gii生成模型,控制器和视图,它将为关系创建函数。 如果没有,你可以创建函数来声明模型中的关系2表
public function getWorks()
{
return $this->hasOne(Works::className(), ['id' => 'works_id']);
}
如果hasMany只是翻转id。
并调用函数
Foo::find()->joinWith('works')->all();