【问题标题】:laravel models fill additional field inside many-to-many tablelaravel 模型填充多对多表中的附加字段
【发布时间】:2018-07-10 04:21:48
【问题描述】:

我是 Laravel 框架的新手,正在努力工作。 我已经了解如何生成 N:M 关系并在模型中处理它们。现在我问你如何在多对多表中填写一个额外的字段?

例如:

  • 餐桌

  • 表 User_Foo

    • user_id
    • foo_id
    • is_owner (bool)
  • 表用户

现在我想声明哪个 foo 用户是真正的所有者。 在我看来,N:M 表存储了这些信息,而不是 Foo 本身。 那么如何在我的 Foo 和 User 模型中声明这些附加字段呢?

【问题讨论】:

    标签: php mysql eloquent laravel-5.5 laravel-migrations


    【解决方案1】:

    Laravel 在定义 N-M 关系时为我们提供了pivot的概念。默认情况下,该表将具有两个连接的键。但是,如果您想在该桥接表中添加额外的字段。

    $model->belongsToMany('Model')->withPivot('column1', 'column2');
    

    在上述情况下,您的数据透视表将有两个额外的列,您可以通过以下方式访问这些列:

    $model->pivot->column1
    $model->pivot->column2
    

    【讨论】:

      【解决方案2】:

      使用 withPivot() 方法可以检索其他字段

      return $this->belongsToMany('App\User')->withPivot('is_owner');
      

      用 sync() 或 attach() 方法填充你可以。

      Laravel relations doc

      【讨论】:

      • 真的很感谢你 :-) 这对我有用。另一篇文章也可以,但我将其标记为有效,因为链接到文档:-)
      • 我的荣幸)我很感激。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多