Использование ларавелла в сочетании с методом скручивания

Я использую 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
        )

)

где имя и фамилия объединены.

Ответ 1

Попробуйте изменить запрос красноречия:

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

Ответ 2

Самое элегантное решение - создать accessor.

Откройте класс Сотрудники (модель) и добавьте функцию доступа:

public function getFullNameAttribute()
{
    return $this->first_name . ' ' . $this->last_name;
}

После этого просто используйте:

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

Ответ 3

Я также столкнулся с такой проблемой, что с запросом соединения здесь является решением моей проблемы

$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');