Php 属性在雄辩的生成器实例上不存在

Php 属性在雄辩的生成器实例上不存在,php,laravel,eloquent,Php,Laravel,Eloquent,我有一张活动桌和一张票桌。我正试图通过订购门票和vip门票来减少常规餐中的可用门票 这是我的存储方法: //创建票证 $ticket = new Ticket(); $ticket->userName = $request->input('userName'); $ticket->userEmail = $request->input('userEmail'); $ticket->phoneNumber = $request->input('phoneNumb

我有一张活动桌和一张票桌。我正试图通过订购门票和vip门票来减少常规餐中的可用门票

这是我的存储方法:

//创建票证

$ticket = new Ticket();
$ticket->userName = $request->input('userName');
$ticket->userEmail = $request->input('userEmail');
$ticket->phoneNumber = $request->input('phoneNumber');
$ticket->regular_quantity = $request->input('regular_quantity');
$ticket->vip_quantity = $request->input('vip_quantity');
$ticket->event_id = $request->route('id');
$ticket->total = $request->input('regular_quantity') + $request->input('vip_quantity');

$event = Event::find(1);
$event = Event::where('id',$ticket->event_id);

if ($ticket->regular_quantity<$event->regular_attendies) {
    DB::table('events')->decrement('regular_attendies', $ticket->regular_quantity);
} elseif ($ticket->vip_quantity<$event->$vip_attendies) {
    DB::table('events')->decrement('vip_attendies', $ticket->vip_quantity);  
} else {
    echo "error";
}

$ticket->save();

return redirect('/');

您从不执行查询。这一行:

$event = Event::where('id',$ticket->event_id);
需要关闭:

$event = Event::where('id',$ticket->event_id)->first();
// or ->firstOrFail();, etc
否则,它是一个生成器实例,您无法从生成器访问列。使用->first将其转换为事件实例或null

此外,还应:

$event = Event::find(1);
// ^ I assume this is used for testing, probably should comment it out.
$event = Event::where('id',$ticket->event_id)->first();

这是多余的。使用一个或另一个。

您永远不会执行查询。这一行:

$event = Event::where('id',$ticket->event_id);
需要关闭:

$event = Event::where('id',$ticket->event_id)->first();
// or ->firstOrFail();, etc
否则,它是一个生成器实例,您无法从生成器访问列。使用->first将其转换为事件实例或null

此外,还应:

$event = Event::find(1);
// ^ I assume this is used for testing, probably should comment it out.
$event = Event::where('id',$ticket->event_id)->first();

这是多余的。使用一个或另一个。

谢谢,我已经使用了它,错误消失了,但它不遵循if语句,因为即使超过了数量,它仍然会记账。您没有任何代码阻止$ticket->save发生。如果您点击else块,您只是在回显错误,但这不会停止执行。但这是另一个问题;如果这个代码修正了你的问题,请投票和/或接受它,并考虑问一个新的问题。谢谢,我已经用过了,错误消失了,但它不遵循if语句,因为它仍然是书,即使它已经超过了金额,你没有任何代码,防止$票券>保存发生。如果您点击else块,您只是在回显错误,但这不会停止执行。但这是另一个问题;如果这个代码修正了你的问题,请投票和/或接受它,并考虑提出一个新问题。