私はLaravel.5.3を使用していますが、以下は私のクエリです
$ProjectManagers = Employees::where("designation" , 1)
->pluck(DB::raw('CONCAT(first_name," ",last_name) AS name'),'id');
エラーをスローします
Issetまたは空の不正なオフセットタイプ
これが正しい方法かどうか知っていますか?
私は連絡先を使用しないで、
$ProjectManagers = Employees::where("designation" , 1)->pluck('first_name','id');
これは正しく機能し、結果を与えています
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[8] => Punit
)
)
期待される結果:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[8] => Punit Gajjar
)
)
ここで、名と姓が連結されます。
雄弁なクエリを次のように変更してみてください。
$ProjectManagers = Employees::select(
DB::raw("CONCAT(first_name,' ',last_name) AS name"),'id')
->where('designation', 1)
->pluck('name', 'id');
最もエレガントな解決策は、 accessor を作成することです。
Employeesクラス(モデル)を開き、アクセサー関数を追加します。
public function getFullNameAttribute()
{
return $this->first_name . ' ' . $this->last_name;
}
その後、単に使用するだけです:
$ProjectManagers = Employees::where('designation', 1)->get()->pluck('full_name', 'id');
また、ここでの結合クエリでの問題は私の問題の解決策です
$studentDegree = Student::leftJoin('degree','degree.student_id','=','student.id')
->select(
DB::raw("CONCAT(student.name,'-',degree.name) AS name_degree"),
'student.id'
)->lists('name_degree','id');