【问题标题】:PHP Laravel Eloquent, foreach breaking my relationshipsPHP Laravel Eloquent,foreach 打破了我的关系
【发布时间】:2016-03-30 20:18:59
【问题描述】:

考虑一下这段代码:

$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 都返回了。

为什么?

【问题讨论】:

  • 您的 Booking 和 Trip 模型中的关系是如何定义的?

标签: php laravel eloquent


【解决方案1】:

这可能是因为你们的关系。如果你在你的模型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 丢失)

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2016-08-13
    • 2018-02-09
    • 2020-10-14
    相关资源
    最近更新 更多