列出列表laravel方法中的多个字段

时间:2016-04-19 09:06:19

标签: php laravel

我正在使用Zizaco/entrust laravel包,并假设我想要获取teacher角色的用户。

我希望返回选定的用户及其namefamily组合,如下所示:

[
    1   =>  'ali nasiri',
    2   =>  'majid basirati'
]

为此,我写了这段代码:

$teachers =
    Role::where('name', 'teacher')->first()->users()->lists('name', 'users.user_id');

但是这样的回归:

{
    "1": "ali",
    "2": "majid"
}

表示只返回了名称字段,因为我们可以在lists方法的第一个参数中定义一个字段。

我如何做到这一点以及什么是最佳解决方案?

1 个答案:

答案 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');
相关问题