在 Laravel 5.4 中更新数据透视表 [重复]
Posted
技术标签:
【中文标题】在 Laravel 5.4 中更新数据透视表 [重复]【英文标题】:Update pivot table in Laravel 5.4 [duplicate] 【发布时间】:2018-08-21 14:21:47 【问题描述】:我有两个模型:Event
和 Ticket
。我在他们之间分配了Many-To-Many
关系:这里是:
Ticket
模特:
public function events()
return $this->belongsToMany('App\Event');
Event
模特:
public function tickets()
return $this->belongsToMany('App\Ticket');
然后我在我的控制器中我想更新pivot
表数据:
public function register(Request $request)
$event = Event::findOrFail($request->event);
if(count($event) > 0)
foreach($request->tickets_type as $key => $value)
if($value !== null)
for($i = 0; $i < (int) $value; $i++)
$sale = new Sale;
$sale->event_id = $request->event;
$sale->event_type = $request->event_type;
$sale->user_id = Auth::user()->id;
$sale->ticket_type = $key;
$sale->save();
$sale->qr = $this->generateQR($sale->event_id, $sale->ticket_type, $sale->id);
$sale->update();
$event->tickets->pivot->ticket_quantity -= $value;
return response()->json([
'success' => true,
'message' => 'Покупка билетов успешно завершена.',
'data' => $request->all()
], 200);
else
return response()->json([
'success' => false,
'error' => 'Попытка подмены данных.'
], 403);
在$event->tickets->pivot->ticket_quantity -= $value;
上它会抛出一个错误:
此集合实例上不存在属性 [pivot]。
解决方法是什么?
【问题讨论】:
可能重复:***.com/q/26566675/3441504 【参考方案1】:改变这个
$event->tickets->pivot->ticket_quantity -= $value;
到这里
$vent->tickets()->attach(id, ['ticket_quantity' => $value]);
您还可以使用同步删除输入中没有的额外条目
$vent->tickets()->sync(id, ['ticket_quantity' => $value]);
希望对你有帮助
【讨论】:
我需要首先从pivot
表中获取值,然后通过将此值减去从request
中获取的数字来更新它。将尝试使用您的解决方案)以上是关于在 Laravel 5.4 中更新数据透视表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5 中使用 Eloquent 更新数据透视表
当我尝试在 laravel 中更新数据透视表的内容时,有啥方法可以解决非法偏移类型错误