繁体   English   中英

Yii2 viaTable连接条件

[英]Yii2 viaTable join condition

可以在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(), ['id' => 'id_user'])
                    ->from(User::tableName())
                    ->viaTable(RoomActiveUser::tableName(), ['id_room' => 'id'], 
                        function($query) {
                          $query->onCondition(['id_role' => 
                             RoleHelper::getConsultantRole()->id]);
                      });

你试过这样做吗?

->viaTable(RoomActiveUser::tableName(), ['id_room' => 'id', 'id_role' => RoleHelper::getConsultantRole()->id])

这应该JOIN X on 'id_room' = 'id' AND 'id_role' = '$ConsultantRole_id'创建一个JOIN X on 'id_room' = 'id' AND 'id_role' = '$ConsultantRole_id'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM