php - 在 Laravel 中如何将参数传递给 BelongsToMany
问题描述
我的用户模型中有这种关系:
public function groups() {
return $this->belongsToMany('\App\Group', 'role_in_group')
->orderBy('role_id', 'desc');
}
显然,它返回用户所属的组。到目前为止,一切都很好。但是我有这个 role_in_group 数据透视表,我想获取用户所属的组,但是具有特定的角色,所以我写了这个另一个函数:
public function groupsAsAdmin() {
return $this->belongsToMany('\App\Group', 'role_in_group')
->whereIn('role_id', [15, 18, 19])
->orderBy('role_id', 'desc');
}
它有效,但我认为这是一个愚蠢的解决方案,我想做类似的事情:
public function groups(array $roles_id = NULL) {
if (empty($roles_id)) {
$id = [10, 15, 18, 19];
}
return $this->belongsToMany('\App\Group', 'role_in_group')
->whereIn('role_id', $id)
->orderBy('role_id', 'desc');
}
我知道这必须有效。我的问题出在模板中。
如果我要求$user->groups
它会返回一个集合,这就是我想要的,但是如果我要求$user->groups([19])
它会返回一个belongsToMany
对象,所以它不会在里面工作@foreach
这将失败:
@foreach($user->groups([10, 15, 19]) as $group)
{{ $group->id }}<br>
@endforeach
那么,如何groups()
在模型中调用该函数,并使其返回一个集合,就像我在没有括号的情况下调用它一样?除了我现在拥有的两个功能之外,还有更好的方法吗?
解决方案
推荐阅读
- php - Having an array before encoding mysql array
- automation - eclipse中的botium项目,多个botium.json不起作用
- ruby - 拆分为空子字符串
- discord.js - 命令权限
- java - firebase ValueEventListener/onDataChange 只是将最后一个子节点从数据库中检索到 firebase recyclerview 并忽略其余的
- xml - 如何从销售 id 中过滤记录(创建 uid),仅针对基于销售的特定商家
- php - Laravel ORM 多对多关系就像一对多
- kubernetes - GitLab集成响应401中的helm安装
- java - 如何使用 Selenium 和 Java 从 Bootstrap Glyphicon 日期选择器中选择日期
- javascript - webworkers 中的 tensorflow.js