繁体   English   中英

Laravel 4.1渴望与“ with”的关系忽略约束子句

[英]Laravel 4.1 eager relationship “with” ignoring constraint clause

// class User
public function roles() {
    return $this->belongsToMany('Role', 'user_roles', 'uid', 'rid');
}

// class Role
public function users() {
    return $this->belongsToMany('User', 'user_roles', 'rid', 'uid');
}

// sql
-- user
id | name | other fields

-- user_role
id | name

-- user_roles, uid fk to user and rid fk to user_role
uid | rid

我正在尝试使用以下代码加载具有特定角色的用户,即加载所有编辑器:

<?php
$roleName = 'editors';
return \User::with(array('roles' => function($query) use($roleName) {
    $query->where('name', '=', $roleName);
}))->get();

上面的代码返回每个用户,忽略$ query-> where。 怎么了?

阅读withwhereHas的文档。 后者就是您想要的:

return \User::whereHas('roles', function($query) use($roleName) {
    $query->where('name', '=', $roleName);
})->get();

您也可以尝试的另一种选择:

$role = new Role::find($role_id);
return $role->users->all();

这将返回所有用户

或者,如果您在某些地方:

$role = new Role::find($role_id);
return $role->users()->where('name','like','%foo%')->get();

这将返回所有具有foo名称的用户

暂无
暂无

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

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