2016-04-19 7 views
0

Zizaco/entrust laravelパッケージを使用していて、teacherロールでユーザを取得したいとします。私はこのような選択されたユーザーとそのnamefamily組み合わせを返したいリストに複数のフィールドをリストするlaravelメソッド

:そのために

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

は、私はこのコードを書いた:

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

をしかし、それは次のように返します。

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

名前フィールドのみが返されたことを意味します.c 1つのフィールドをlistsメソッドの最初のパラメータに定義します。

どうすればよいですか、何が最良の解決策ですか?あなたのユーザモデル

答えて

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'); 
+0

このエラーが発生しました: 'SQLSTATE [42S22] :カラムが見つかりません:1054 'フィールドリスト'で不明なカラム 'full_name'(SQL: 'full_name'を選択、' users'.'user_id'''''''''' internal_2''user_id' = role_user'.'user_id'ここで 'role_user'.'role_id' = 4)' –

+0

答えを変更しました関係を介してクエリを含めることができます。今すぐ働かなければならない。 – Mysteryos

+0

ありがとう@Mysteryos your solution returns full_nameユーザーの配列。私は 'lists()'メソッドを ' - >リスト( 'full_name'、 'user_id');に変更します。回答で編集してください。 –

関連する問題