Laravel - таблица с двумя столбцами, каждый из которых имеет идентификатор из разных таблиц - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужно создать одну цель, в которой есть раскрывающийся список с множественным выбором, в котором разные отделы могут иметь одну и ту же цель. Я хотел создать таблицу отношений с таким выводом.

Department Table
id | name
1    Science Department
2    Math Department
3    Biology Department

Objective Table
id | name
1    Be the best

Relationship Table
objective_id | department_id
1              1
1              2
1              3

Это то, что я думаю внутри контроллера.

public function store(Request $request) {
    $objective = Objective::updateOrCreate(
      [ 'id' => $request->id ?? null ],
      [ 'name' => $request->name ]
    );

    // From multiple select drop down
    foreach($request->departments as $department) {
      RelationshipTable::updateOrCreate(
        [ // what should be the case? ],
        [
          'objective_id' => $objective->id,
          'department_id' => $department['id'],
        ]
      );
    }
  }

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

1 Ответ

1 голос
/ 08 апреля 2020

Сначала Вы выполняете запрос под l oop - это очень плохой процесс. Может ли этот процесс помочь вам? измените его как вам нужно!

public function store(Request $request) {
    $objective = Objective::updateOrCreate(
      [ 
       'id' => $request->id ?? null,
       'name' => $request->name
      ]
    );

    // From multiple select drop down
    $insert_array = [];
    foreach($request->departments as $department) {
       array_push($insert_array,[
                                   'objective_id' => $objective->id,
                                   'department_id' => $department['id'],    
                                ]);
    }
    RelationshipTable::updateOrCreate($insert_array);
}

// Отношения должны быть такими, как в этом примере Модель отношений

public function object() {
    return $this->hasOne('Model Class of Object' , 'objective_id ' , 'id')
}
public function depertment() {
    return $this->hasMany('Model Class of depertment' , 'department_id' , 'id')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...