php – Yii2 viaTable加入条件

可以在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]);
                      });

相关文章

在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信...
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.c...
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时...
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括...
navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...