我正在使用Zizaco/entrust laravel包,并假设我想要获取teacher
角色的用户。
我希望返回选定的用户及其name
和family
组合,如下所示:
[
1 => 'ali nasiri',
2 => 'majid basirati'
]
为此,我写了这段代码:
$teachers =
Role::where('name', 'teacher')->first()->users()->lists('name', 'users.user_id');
但是这样的回归:
{
"1": "ali",
"2": "majid"
}
表示只返回了名称字段,因为我们可以在lists
方法的第一个参数中定义一个字段。
我如何做到这一点以及什么是最佳解决方案?
答案 0 :(得分:1)
在用户模型中,添加自定义属性(accessor):
<?php
use Zizaco\Entrust\Traits\EntrustUserTrait;
class User extends Eloquent
{
use EntrustUserTrait; // add this trait to your user model
...
protected $appends = ['full_name'];
//Setter of full name attribute
public function getFullNameAttribute()
{
return $this->name.' '.$this->surname;
}
}
然后用它来访问全名:
$teachers = User::whereHas('roles',function($q){
return $q->where('name','teacher');
})
->get()
->lists('full_name');