Joe*_*Joe 6 php mysql activerecord join yii2
可以在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]);
});
Run Code Online (Sandbox Code Playgroud)
但这不是一个好的解决方案.为什么?当你进行左连接时,id_role条件将使其实际成为内连接.该id_role条件应放在内部ON的连接部分.
我正在网上搜索并检查代码,但我看不出它是如何解决的.
Joe*_*Joe 14
我得到了强强的答案 - $query->onCondition()应该用于我需要的东西.结果代码:
return $this->hasMany(User::className(), ['id' => 'id_user'])
->from(User::tableName())
->viaTable(RoomActiveUser::tableName(), ['id_room' => 'id'],
function($query) {
$query->onCondition(['id_role' =>
RoleHelper::getConsultantRole()->id]);
});
Run Code Online (Sandbox Code Playgroud)