2015-12-24 4 views
3

Рассмотрим этот блок кода: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 Когда Еогеасп не работает, как depFlight и arrFlight вернулся.

Почему?

+0

Как определяются отношения в ваших моделях бронирования и поездки? – benJ

ответ

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 теряются)

Смежные вопросы