可以将detach()方法应用于Laravel中的一对多关系吗?

时间:2018-03-16 14:44:43

标签: php laravel laravel-5

在Laravel文档中,我发现了detach()方法来分离多对多关系中的所有对象。在Laravel中,detach()方法也可以应用于一对多的关系吗?如果没有,在这种情况下如何分离所有n个对象?

2 个答案:

答案 0 :(得分:3)

在多对多关系中,detach()方法仅删除数据库中的数据透视表项,除非您有特定的级联删除。

对于一对多关系,您希望使用dissociate()方法取消绑定关系,并使用associate()将其绑定在belongsTo侧。

    $comment->post()->associate($post->id);

相反,您可以在hasMany端使用attach()添加帐户:

    $post->comments()->attach($comment->id);

要删除您要执行的所有评论:

    $post->comments()->delete();

更多信息: https://laravel.com/docs/5.6/eloquent-relationships

答案 1 :(得分:1)

来自docs

  

删除belongsTo关系时,您可以使用dissociate   方法。此方法将关系的外键设置为null

$user->account()->dissociate();

$user->save();