考虑这段代码:
$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都会返回。
为什么?
答案 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将再次执行查询(性能损失),并且在这种情况下可能会失去其他关系(depFlight
和arrFlight
)