【问题标题】:Laravel - What is the opposite of the save method on a one-to-many relationship?Laravel - 一对多关系上的保存方法的对立面是什么?
【发布时间】:2016-04-01 16:53:52
【问题描述】:

假设我正在建立一个一对多关系的关联,就像这样

$artwork->views()->save($view);

我将如何删除此关联?

【问题讨论】:

    标签: php laravel orm eloquent


    【解决方案1】:

    detach() 是多对多关系,你想要的是dissociate()。根据文档:

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

    https://laravel.com/docs/5.1/eloquent-relationships#inserting-related-models

    【讨论】:

    • 我认为这是正确的,但是如何只删除一个关联的项目?
    • 好问题。目前无法尝试自己,但也许可以尝试从另一个模型中分离出来,看看是否可行?
    • 我走了很长一段路,最终将另一个模型的artifact_id设置为NULL,这实际上是做同样的事情。这是正确的答案。谢谢@Joel Hinz
    【解决方案2】:

    您正在展示一个创建关联的代码。我猜你的意思是删除:

    App\Views::destroy(245);
    

    https://laravel.com/docs/5.1/eloquent#deleting-models

    【讨论】:

      【解决方案3】:

      扩展@Joel Hinz 的回答,只从关系中删除一项如何:

      $artwork->views()->first()->delete();
      

      您也可以使用wherelatest 等进行选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-09
        • 2015-03-05
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 2021-04-07
        • 2017-07-17
        • 1970-01-01
        相关资源
        最近更新 更多