J'utilise Laravel.5.3 et ci-dessous est ma requête
$ProjectManagers = Employees::where("designation" , 1)
->pluck(DB::raw('CONCAT(first_name," ",last_name) AS name'),'id');
qui jette une erreur
Type de décalage illégal dans isset ou vide
Puis-je savoir si c'est la bonne méthode?
si je n'utilise pas de contact et utilise comme
$ProjectManagers = Employees::where("designation" , 1)->pluck('first_name','id');
qui fonctionne correctement et me donne un résultat
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[8] => Punit
)
)
Résultat attendu:
Illuminate\Support\Collection Object
(
[items:protected] => Array
(
[8] => Punit Gajjar
)
)
où le prénom et le nom sont concaténés.
Essayez de changer la requête éloquente en:
$ProjectManagers = Employees::select(
DB::raw("CONCAT(first_name,' ',last_name) AS name"),'id')
->where('designation', 1)
->pluck('name', 'id');
La solution la plus élégante est de créer un accesseur .
Ouvrez votre classe (modèle) Employés et ajoutez une fonction d'accesseur:
public function getFullNameAttribute()
{
return $this->first_name . ' ' . $this->last_name;
}
Après cela, utilisez simplement:
$ProjectManagers = Employees::where('designation', 1)->get()->pluck('full_name', 'id');
J'ai également rencontré un problème comme celui-ci avec la requête de jointure, voici la solution de mon problème
$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');