我有一个中间表,我想在其中保存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')
,它返回确定,但是数据库表为空。
答案 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,3
是sbj_types
的ID。
您可以了解有关同步here的更多信息。