создайте список данных со значением от нескольких отношений «один ко многим»

#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,