在 Laravel 5.4 中更新数据透视表 [重复]

Posted

技术标签:

【中文标题】在 Laravel 5.4 中更新数据透视表 [重复]【英文标题】:Update pivot table in Laravel 5.4 [duplicate] 【发布时间】:2018-08-21 14:21:47 【问题描述】:

我有两个模型:EventTicket。我在他们之间分配了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-&gt;tickets-&gt;pivot-&gt;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 复选框问题,我无法更新数据透视表

如何在 laravel 5 中使用 Eloquent 更新数据透视表

当我尝试在 laravel 中更新数据透视表的内容时,有啥方法可以解决非法偏移类型错误

在 laravel 中使用多对多关系同步:PostgreSQL 数据透视表不更新

laravel:更新或创建(更新插入)数据透视表

laravel4 更新数据透视表中的附加列