如何将数据插入数据透视表 table 和 laravel eloquent 内的附加字段
How to insert data to the additional field which is inside pivot table with laravel eloquent
我的数据透视表 table 有附加字段...
id | user_id | language_id | level
---------------------------------------
和我的代码:
User::find($this->userId)->languages()->attach(['language_id' => $lang_id, 'level' => $level]);
但结果是:
id | user_id | language_id | level
---------------------------------------
1 1 1 null
1 1 2 null
实际上,第二行的language_id必须是第一行的水平...
我怎样才能正确地做到这一点?
id | user_id | language_id | level
---------------------------------------
1 1 1 2
根据 the docs,您需要使用关系定义数据透视表 table 的数据列。
public function languages() {
return $this->belongsToMany('User')->withPivot('level');
}
attach()
的工作方式有点不同。第一个参数是其他模型的id或实例,第二个参数是其他数据透视字段:
User::find($this->userId)->languages()->attach($lang_id, ['level' => $level]);
正如@ceejayoz 提到的,您也没有在您的关系中定义 withPivot()
。这意味着 level
将不会出现在结果中。通过在关系的两边添加 withPivot()
来改变它:
public function languages() {
return $this->belongsToMany('Language')->withPivot('level');
}
我的数据透视表 table 有附加字段...
id | user_id | language_id | level
---------------------------------------
和我的代码:
User::find($this->userId)->languages()->attach(['language_id' => $lang_id, 'level' => $level]);
但结果是:
id | user_id | language_id | level
---------------------------------------
1 1 1 null
1 1 2 null
实际上,第二行的language_id必须是第一行的水平...
我怎样才能正确地做到这一点?
id | user_id | language_id | level
---------------------------------------
1 1 1 2
根据 the docs,您需要使用关系定义数据透视表 table 的数据列。
public function languages() {
return $this->belongsToMany('User')->withPivot('level');
}
attach()
的工作方式有点不同。第一个参数是其他模型的id或实例,第二个参数是其他数据透视字段:
User::find($this->userId)->languages()->attach($lang_id, ['level' => $level]);
正如@ceejayoz 提到的,您也没有在您的关系中定义 withPivot()
。这意味着 level
将不会出现在结果中。通过在关系的两边添加 withPivot()
来改变它:
public function languages() {
return $this->belongsToMany('Language')->withPivot('level');
}