Utilisation Laravel de la méthode concat avec pluck

J'utilise Laravel.5.3 et voici ma requête

$ProjectManagers = Employees::where("designation" , 1)
->pluck(DB::raw('CONCAT(first_name," ",last_name) AS name'),'id');

qui déclenche une erreur

Illégal type de décalage dans isset ou empty

je peux savoir si c'est la bonne méthode ?

si je n'utilise pas de contact et l'utilisation de la forme

$ProjectManagers = Employees::where("designation" , 1)->pluck('first_name','id');

qui fonctionne correctement et me donne le résultat

IlluminateSupportCollection Object
(
    [items:protected] => Array
        (
            [8] => Punit
        )

)

Résultat Escompté:

IlluminateSupportCollection Object
(
    [items:protected] => Array
        (
            [8] => Punit Gajjar
        )

)

où prénom et nom sont concaténées.

13
demandé sur Ramkrishna Sharma 2016-10-19 15:56:42

3 réponses

Essayez de changer le signe de la requête:

$ProjectManagers = Employees::select(
            DB::raw("CONCAT(first_name,' ',last_name) AS name"),'id')
            ->where('designation', 1)
            ->pluck('name', 'id');
26
répondu martincarlin87 2017-03-30 06:53:26

la solution La plus élégante est de créer un accesseur.

ouvrez votre Employés classe (modèle) et ajouter un accesseur de la fonction:

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');
17
répondu Blaž Oražem 2017-11-15 14:47:50

j'ai également fait face à un problème comme celui-ci avec join query 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');
1
répondu Hasib Kamal 2018-09-12 04:14:35