我有一个表peoples
countries
和一个数据透视表country_people
。数据透视表具有属性countries_id
peoples_id
number
。我可以将外键插入数据透视表,但我无法插入数字。我该怎么做呢 ?
人物模型
public function countries()
{
return $this->belongsToMany('App\Country')->withPivot('number')
->withTimestamps();
}
国家/地区模型
public function peoples()
{
return $this->belongsToMany('App\People')->withPivot('number')
->withTimestamps();
}
控制器
$people = new People(array(
'quantity' => $request->get('quantity'),
));
$people->save();
$order->countries()->sync($request->get('id')->attach('quantity'));
答案 0 :(得分:0)
看起来你正在组合更新方法。查看https://laravel.com/docs/5.5/eloquent-relationships#updating-many-to-many-relationships了解详情。
在您的情况下,请尝试:
$ order-> countries() - > attach($ request-> get('id'),['number'=> $人民[ '量']);
如果要同步而不是附加,请使用:
$ order-> countries() - > sync([$ request-> get('id')=> ['number'=> $人民[ '数量']]);
答案 1 :(得分:0)
如果要将其他列附加到数据透视表,则可以将其作为数组传递。例如:
$id = intval($request->get('id'));
$order->countries()->sync( $id => ['number' => $quantity]); //assuming you have saved the value of number in quantity
查看同步关联下的https://laravel.com/docs/5.5/eloquent-relationships以获取更多详细信息。
另外,请记住,如果未在数组中指定,则使用sync将删除任何先前的关系。如果您不希望这种情况发生,请使用syncWithoutDetaching。