laravel模型填充多对多表中的附加字段

时间:2018-01-31 06:21:30

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

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

例如:

  • Table Foo

  • 表User_Foo

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

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

2 个答案:

答案 0 :(得分:0)

使用withPivot()方法

检索其他字段
return $this->belongsToMany('App\User')->withPivot('is_owner');

您可以使用sync()或attach()方法填写。

Laravel relations doc

答案 1 :(得分:0)

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

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

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

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