Yii2 viaTable连接条件

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)