Laravel 5.7 многие ко многим sync () не работает - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть промежуточная таблица, в которой я хочу сохранить sbj_type_id и difficulty_level_id, поэтому я настроил это:

$difficulty_level = DifficultyLevel::find(5);
if ($difficulty_level->sbj_types()->sync($request->hard, false)) {
    dd('ok');
}
else {
    dd('not ok');
}

Вот мой DifficultyLevel.php:

public function sbj_types() {
     return $this->belongsToMany('App\SbjType');
}

и вот мой SbjType.php:

public function difficulty_levels() {
    return $this->hasMany('App\DifficultyLevel');
}

В приведенном выше коде у меня есть dd('ok'), он возвращает в порядке , нотаблица базы данных пуста.

1 Ответ

0 голосов
/ 06 февраля 2019

Попробуйте изменить

return $this->hasMany('App\DifficultyLevel'); 

на

return $this->belongsToMany('App\DifficultyLevel');

Метод sync() принимает массив с идентификаторами записей, которые вы хотите синхронизировать, в качестве аргумента, к которому вы можете при желаниидобавить промежуточные значения таблицыХотя sync($request->hard, false), похоже, не создает исключение в вашем случае, я не понимаю, как это будет работать.

Попробуйте, например:

$difficulty_level->sbj_types()->sync([1,2,3]);

, где 1,2,3идентификаторы sbj_types.

Подробнее о синхронизации можно прочитать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...