【发布时间】:2019-08-31 17:04:02
【问题描述】:
我需要提取模型查询集中存在的唯一关系集。我有表“用户”的模型用户和表“角色”的模型角色,用户有很多角色。
//User.php
public function roles()
{
return $this->belongsToMany(Role::class);
}
//Role.php
public function users()
{
return $this->belongsToMany(User::class);
}
我使用集合管理它,但是它需要运行这么大的查询,这会减慢整个请求的速度
//Controller
...
$users = User::query()->someChainOfScopes();
$uniqueRoles = $users->get()->pluck('roles')->flatten(1)->unique('id')->values();
...
此代码返回我需要的集合,但我想使用查询生成器来实现它以提取独特的角色以提高速度
【问题讨论】:
-
你能发布你期望的最终结果吗
-
我希望在执行 Role::find([1,2,3]) 时获得角色集合。
标签: laravel laravel-query-builder