#laravel #laravel-5.5
#laravel #laravel-5.5
Вопрос:
У меня есть структура таблицы со списком идентификаторов, выбранных из выпадающего списка. Допустим, в следующем формате:
id,teacher_id,batch_id,course_id,program_id,depart_id
эти поля сохраняются в базе данных с помощью вызова ajax. Теперь я хотел получить имя, связанное с этим id's
У меня есть функция, подобная этой:
public function store(StoreEmployeesRequest $request)
{
$teacherCourse = TeacherCourse::create($request->all());
}
Здесь, после того, как TeacherCourse
был создан, я хотел получить все значения, связанные с $teacherCourse->teacher_id
таблицей TeacherCourse
и объедините значение и создайте массив в следующем формате:
{
"id":8,
"program":"Master of Computer", //with program_id from program table
"course":"software engineering" //with course_id from course table
},
{
"id":7,
"program":"Bachelor of Pharmacy", //with program_id from program table
"course":"Structure Programing" //with course_id from course table
}
Связь в TeacherCourse
public function course()
{
return $this->belongsTo(Course::class,'course_id');
}
public function program()
{
return $this->belongsTo(Program::class,'program_id');
}
Я пытался получить значение с помощью этой операции, но потерпел неудачу. Как я могу создать единый массив, получив значение из нескольких таблиц?
$teacherCourse = $teachercourse->program->map(function ($program)
{
return $program->name;
});
Ответ №1:
попробуйте это:
$teacherCourse = $teachercourse->map(function ($teacherCourse)
{
return [
'id' => $teacherCourse->id,
'program' => $teacherCourse->program()->pluck('name'),
'course' => $teacherCourse->course()->pluck('name');
];
})->toArray();
Я надеюсь помочь вам
Комментарии:
1. позвольте мне попробовать решение и вернуться к вам!
2. я получаю вложенный массив, я просто хочу, чтобы строковое имя и курс были привязаны к ‘program` и
course
3. отредактируйте код в program()->first()->name или program->name @AkshayKriti
4. я думаю,
lists
следует изменить наpluck
5. @AkshayKriti если вы хотите выбрать только столбец, да, вы должны использовать pluck,