Ответ 1
Попробуйте изменить запрос красноречия:
$ProjectManagers = Employees::select(
DB::raw("CONCAT(first_name,' ',last_name) AS name"),'id')
->where('designation', 1)
->pluck('name', 'id');
Я использую 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.
Откройте класс Сотрудники (модель) и добавьте функцию доступа:
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');