【问题标题】:Multiple relations to same model in LaravelLaravel中与同一模型的多个关系
【发布时间】:2015-04-28 10:41:00
【问题描述】:

我在 Eloquent 中有一个多对多的关系。

架构:

templates       modules         module_template
- id            - id            - module_id
- name          - content       - template_id
                                - order

但是,我需要让一个模板可以多次包含同一个模块。我该怎么做?

例如module_template:

module_id | template_id | order
1         | 42          | 1
4         | 42          | 2
1         | 42          | 3

$template->modules()->detach($moduleId)detach 与模型的所有关系,对吗?假设一开始甚至可以attach他们。

【问题讨论】:

    标签: php laravel eloquent laravel-5


    【解决方案1】:

    你可以attach多次,没问题。但是detach 将删除所有关联。 (当然你的表不能有FK1,FK2 唯一/主约束)

    但是,不要害怕 :) 您仍然可以手动操作:

    $moduleId = 1;
    
    $template->modules()
       ->newPivotStatementForId($moduleId)
       ->where('order', 3)
       ->delete()
    

    【讨论】:

      【解决方案2】:

      如果您将 module_template 定义为它自己的 Eloquent 模型 ModuleTemplate,您将能够做到这一点

      这样您就可以在表中插入和删除行,而无需依赖 attach() 和 detach() 及其检查。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-18
        • 2018-12-29
        • 2018-04-15
        • 2016-02-21
        • 1970-01-01
        • 2016-07-12
        • 2018-12-11
        相关资源
        最近更新 更多