可以在viaTable的join部分设置条件吗?
目前我得到了这个:
return $this->hasMany(User::className(),['id' => 'id_user'])
->from(User::tableName())
->viaTable(RoomActiveUser::tableName(),['id_room' => 'id'],function($query) {
return $query->andWhere(['id_role' =>
RoleHelper::getConsultantRole()->id]);
});
但这不是一个好的解决方案.为什么?
当您执行左连接时,id_role条件将使其实际成为内连接. id_role条件应该放在连接的ON部分内.
最佳答案
我得到了强强的答案 – $query-> onCondition()应该用于我需要的东西.结果代码:
return $this->hasMany(User::className(),function($query) {
$query->onCondition(['id_role' =>
RoleHelper::getConsultantRole()->id]);
});