PHP Laravel Eloquent,foreach打破了我的关系

时间:2015-12-24 11:13:06

标签: php laravel eloquent

考虑这段代码:

$booking = Booking::where('id', $bookingId)->with('Trips.depFlight')->with('Trips.arrFlight')->first();

foreach($booking->trips as $trip){}

return response()->json($booking);

当foreach运行时,arrFlight和depFlight都不会以json的形式返回 当foreach没有运行时,depFlight和arrFlight都会返回。

为什么?

1 个答案:

答案 0 :(得分:0)

可能这是因为你们的关系。如果您在模型Trips中定义了您的关系,那么您应该在Trips而不是trips处使用此关系。所以你应该这样使用它:

$booking = Booking::where('id', $bookingId)->with('Trips.depFlight')->with('Trips.arrFlight')->first();

foreach($booking->Trips as $trip){}

$booking = Booking::where('id', $bookingId)->with('trips.depFlight')->with('trips.arrFlight')->first();

foreach($booking->trips as $trip){}

取决于您的关系的实际名称(大写字母与否)

如果您在代码关系中使用不同的字母大小写,Laravel将再次执行查询(性能损失),并且在这种情况下可能会失去其他关系(depFlightarrFlight