首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用急装载机/变异器/ laravel辅助器澄清

用急装载机/变异器/ laravel辅助器澄清
EN

Stack Overflow用户
提问于 2018-10-01 13:40:00
回答 2查看 2.3K关注 0票数 2

我正在为工作制作一个laravel应用程序,我需要加载所有的用户与他们的附加角色,没有任何嵌套的角色。我将本教程用于角色:https://medium.com/@ezp127/laravel-5-4-native-user-authentication-role-authorization-3dbae4049c8a。如果我在我的用户模型上使用public $with = ['roles'];,它会返回用户对象中的整个角色对象,我需要它只返回角色:‘role _name’;

代码语言:javascript
运行
复制
 /**
 * set up eloquent between roles/user
 *
 * @return \Illuminate\Database\Eloquent\Relations\belongsToMany
 */
public function roles() 
{
    return $this->belongsToMany(Role::class);
}

上面是我的用户模型,下面是我的角色模型来定义关系。

代码语言:javascript
运行
复制
 /**
 * provides a many-to-many relationship to User model
 *
 * @return User::class
 */
public function users()
{
  return $this->belongsToMany(User::class);
}

我认为通过将其添加到用户模型中:

代码语言:javascript
运行
复制
protected $appends = ['role_name'];

public function getRoleNameAttribute()
{
    return $this->attribute['name'];
}

它将返回所有内容,但它所做的只是在模型上创建一个role_name:'user_name';。因此,我想我意识到我访问的只是用户表,而不是DB中的角色表,但也不知道该做什么。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-01 13:54:08

如果为了方便起见,需要直接从模型中访问角色名称,则应该引用实际的关系数据:

代码语言:javascript
运行
复制
protected $appends = ['role_name'];

public function getRoleNameAttribute()
{
    return $this->roles->pluck('name');
}

这应该会将角色名称数组附加到用户模型中。这将是一个数组,因为角色似乎与User模型有着多到多的关系。

票数 5
EN

Stack Overflow用户

发布于 2018-10-01 13:56:27

问题是您要在$this->attributes['name']中返回getRoleNameAttribute。你想要role names,所以你可以做这样的事情:

如果您想要一个具有名称的数组:

代码语言:javascript
运行
复制
return $this->roles()->pluck('name')

如果要将名称作为字符串:

代码语言:javascript
运行
复制
return array_implode(", ", $this->roles()->pluck('name')->toArray());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52592457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档