假设我有三个表(这只是一个例子):
users user_id username roles role_id name user_roles user_id role_id primary (boolean)
和相应的laravel模型:
class User extends Eloquent { public function roles() { return $this->belongsToMany('Role')->withPivot('primary'); } } class Role extends Eloquent { public function users() { return $this->belongsToMany('User')->withPivot('primary'); } }
我想获得所有用户的列表,但只返回返回对象中的主要角色.
如果我使用类似的东西:
$users = User::with('roles')->find(1);
每个用户对象都将包含与其对应的所有角色的列表.我希望此列表仅包含主要角色.有没有办法从查询中执行此操作,而无需后处理$users数组?
请尝试以下方法:
$users = User::with(array('roles' => function($query) { $query->where('primary',1); }))->find(1);