Laravel 5.7多对多同步()不工作

Laravel 5.7多对多同步()不工作,laravel,many-to-many,Laravel,Many To Many,我有一个中间表,我想在其中保存sbj_type_id和难度_level_id,因此我设置了以下内容: $difficulty_level = DifficultyLevel::find(5); if ($difficulty_level->sbj_types()->sync($request->hard, false)) { dd('ok'); } else { dd('not ok'); } 下面是我的困难级别php: public function sbj

我有一个中间表,我想在其中保存
sbj_type_id
难度_level_id
,因此我设置了以下内容:

$difficulty_level = DifficultyLevel::find(5);
if ($difficulty_level->sbj_types()->sync($request->hard, false)) {
    dd('ok');
}
else {
    dd('not ok');
}
下面是我的困难级别php:

public function sbj_types() {
     return $this->belongsToMany('App\SbjType');
}
public function difficulty_levels() {
    return $this->hasMany('App\DifficultyLevel');
}
下面是我的SbjType.php:

public function sbj_types() {
     return $this->belongsToMany('App\SbjType');
}
public function difficulty_levels() {
    return $this->hasMany('App\DifficultyLevel');
}
在上面的代码中,我有
dd('ok')
返回ok,但数据库表是空的。

尝试更改

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

sync()
方法将一个带有要同步记录id的数组作为参数,您可以选择向其中添加中间表值。虽然在您的情况下,
sync($request->hard,false)
似乎不会引发异常,但我看不出这是如何工作的

例如:

$difficulty_level->sbj_types()->sync([1,2,3]);
其中
1,2,3
sbj_类型的id

您可以阅读有关同步的更多信息。

尝试更改

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

sync()
方法将一个带有要同步记录id的数组作为参数,您可以选择向其中添加中间表值。虽然在您的情况下,
sync($request->hard,false)
似乎不会引发异常,但我看不出这是如何工作的

例如:

$difficulty_level->sbj_types()->sync([1,2,3]);
其中
1,2,3
sbj_类型的id


您可以阅读有关同步的更多信息。

如果需要,您也可以在同步表上为每个id添加属性。感谢它起作用。您能告诉我将
hasMany
更改为
belongTomany
的原因吗?您可以使用
hasMany
实现一对多关系。当关系是多对多时,就没有(技术上)模型“拥有”另一个模型,这可能就是为什么在这种情况下,在两个模型上都使用
belongsToMany
。在某些情况下,定义表关系的语言方法可能很难理解。如果需要,也可以在同步表上为每个id添加属性。谢谢,它起作用了。您能告诉我将
hasMany
更改为
belongTomany
的原因吗您可以使用
hasMany
来实现一对多关系当关系是多对多时,就没有(技术上)模型“拥有”另一个模型,这可能就是为什么在这种情况下,在两个模型上都使用
belongsToMany
。在某些情况下,定义表关系的语言方法可能很难理解。