在数据透视 table 中使用 eloquent 保存数据
Saving data with eloquent in a pivot table
我正在尝试实现对枢轴的简单插入 table 但我不明白为什么它不起作用的原理。
我有一个语言 table,其中包含填充有语言的 ID、名称和代码。我有一个 users table 填充了用户。中间的 table 是 users_languages,其中包含列 user_id 和 language_id.
我的请求是这样的
{
"languages": [1, 2] -> language ids
}
我在用户模型中的语言方法如下所示:
public function language() : BelongsToMany
{
return $this
->belongsToMany(Language::class, 'users_languages')
->withPivot('user_id', 'language_id');
}
我正在尝试添加这样的语言:
public function setLanguages(array $languages) : self
{
$this->language()->delete();
$this->language()->createMany($languages);
return $this;
}
我得到的结果实际上是它试图在语言 table 中创建一个新条目,而不是仅仅在 user_id 和 language_id 之间建立联系。
我正在查看文档和一些文章这是如何工作的,但我 none 找到了有效的解决方案。我在我的项目中使用 Lumen 5.5。预先感谢您的帮助!
使用attach()
:
public function setLanguages(array $languages) : self
{
$this->language()->attach($languages);
return $this;
}
如果要删除现有数据透视条目,请使用 sync()
。
public function setLanguages(array $languages) : self
{
$this->language()->sync($languages);
return $this;
}
我正在尝试实现对枢轴的简单插入 table 但我不明白为什么它不起作用的原理。
我有一个语言 table,其中包含填充有语言的 ID、名称和代码。我有一个 users table 填充了用户。中间的 table 是 users_languages,其中包含列 user_id 和 language_id.
我的请求是这样的
{
"languages": [1, 2] -> language ids
}
我在用户模型中的语言方法如下所示:
public function language() : BelongsToMany
{
return $this
->belongsToMany(Language::class, 'users_languages')
->withPivot('user_id', 'language_id');
}
我正在尝试添加这样的语言:
public function setLanguages(array $languages) : self
{
$this->language()->delete();
$this->language()->createMany($languages);
return $this;
}
我得到的结果实际上是它试图在语言 table 中创建一个新条目,而不是仅仅在 user_id 和 language_id 之间建立联系。
我正在查看文档和一些文章这是如何工作的,但我 none 找到了有效的解决方案。我在我的项目中使用 Lumen 5.5。预先感谢您的帮助!
使用attach()
:
public function setLanguages(array $languages) : self
{
$this->language()->attach($languages);
return $this;
}
如果要删除现有数据透视条目,请使用 sync()
。
public function setLanguages(array $languages) : self
{
$this->language()->sync($languages);
return $this;
}