使用数据透视表laravel查询
映射
我遇到了透视查询问题。
应用/实体/ user.php的
public function roles()
{
return $this->belongsToMany('App\Entities\UserRole', 'user_user_roles', 'user_id', 'user_role_id');
}
public function getPivotCondition($roleId)
{
return $this->roles()->wherePivot('user_role_id','=',$roleId);
}
控制器
use App/Entities/user;
public function getUserWithRole(user $User){
$users = $User->getPivotCondition(1)->get();
dd($users);
}
导致查询
SELECT `user_roles`.*,
`user_user_roles`.`user_id` AS `pivot_user_id`,
`user_user_roles`.`user_role_id` AS `pivot_user_role_id`
FROM `user_roles`
INNER JOIN `user_user_roles`
ON `user_roles`.`id` = `user_user_roles`.`user_role_id`
WHERE `user_user_roles`.`user_id` IS NULL
AND `user_user_roles`.`user_role_id` = '1'
我的问题是,为什么我在查询中 user_user_roles
。user_id
为空
我知道我可以使用 WhereHas ,但我正在寻找替代方案。我可以使用 wherePivot('user_role_id','=',$ roleId,'或'); < / strong> else orWherePivot 但会导致查询条件为或。