php – 使用Laravel模型过滤数据透视表数据

假设我有三个表(这只是一个例子):
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);

相关文章

[laravel] laravel的数据库配置 找到程序目录结构下.env文件 配置基本的数据库连接信息 DB_HOST=127.0....
[Laravel] Laravel的基本HTTP路由 使用Laravel的基本路由,实现get请求响应,找到文件app/Http/routes....
如果说laravel框架的核心是什么,那么无疑是服务容器。理解服务容器的概念,对于我们使用laravel太重要...
网上有很多解析laravel中间件的实现原理,但是不知道有没有读者在读的时候不明白,作者是怎么想到要用a...
laraveli添加一个或多个用户表,以admin为例。 部分文件内容可能需要根据实际情况修改 创建一个Admin模...
TL;DR: 本文介绍 Laravel 的 FastExcel 组件,文中会对 PHP generators 速览,并给出如何在节约内存的同...