【问题标题】:Eloquent relationships syncing雄辩的关系同步
【发布时间】:2018-06-20 19:36:37
【问题描述】:

在我的 Laravel 项目中,我正在努力处理 Eloquent 关系。

我的数据库中有一个“user”表和一个“user_lines”表。 'user_lines' 表有一个 'user_id' 字段,对应于 'users' 中的 'id' 字段,采用经典的主从关系。

User 模型与 UserLine 模型具有 hasMany 关系。 UserLine 模型与 User 模型具有 belongsTo 关系。

在我的应用程序中,我有一个包含多个用户行的用户表单。在表单提交期间,可以添加、更改或删除这些用户行。到目前为止,我发现自己在迭代提交的用户行并手动创建、更新和删除用户行。我觉得我错过了 Eloquent 提供的附加/分离/同步方法,但我似乎无法让它们工作。

$user->lines()->attach or $user->lines()->sync               

给我一​​个例外,告诉我这些是 Illuminate\Database\Query\Builder 上未定义的方法。

$user->lines()->createMany($lines) 

有效,但这只是创建新行,它不会更新现有行并删除已删除的行。

【问题讨论】:

    标签: php mysql laravel eloquent laravel-eloquent


    【解决方案1】:

    attachdetachsync 方法适用于多对多关系,而不适用于一对多。因此,您需要遍历行并逐行添加或编辑它们。

    【讨论】:

      【解决方案2】:

      您的表关系是一对多,要附加到此类关系,您应该使用savesaveManycreate 方法。

      对于更新,您可以执行以下操作:

      $user->lines()->where('field',$something)->update($array);
      

      attachdetachsync 方法适用于多对多关系,而不适用于一对多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 2014-08-27
        • 2015-03-14
        • 2018-11-28
        相关资源
        最近更新 更多