Laravel 5.7多对多sync()无法正常工作

时间:2019-02-06 12:42:26

标签: laravel many-to-many

我有一个中间表,我想在其中保存sbj_type_iddifficulty_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 :(得分:1)

尝试更改

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

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

sync()方法采用一个数组,其中包含要同步的记录的ID作为参数,您可以选择在其中添加中间表值。尽管sync($request->hard, false)在您的情况下似乎没有引发异常,但我不知道这将如何工作。

尝试例如:

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

其中1,2,3sbj_types的ID。

您可以了解有关同步here的更多信息。