首页 > 解决方案 > 应该如何预先加载属性?

问题描述

我的模型上有一组属性/访问器,用于计算特定飞机类型的航班数量。有没有办法只在我想要它们时返回它们?如果我将它们添加到加载所有资源时appends[]会出现问题。N+1

        /**
         *    Gets the number of flights flown by the aircraft
         */
        public function getTotalFlightsAttribute () {

            return Flight::whereHas('aircraft', function($query) {

                $query->where('aircraft_type_id', '=', $this->id);
            })
                         ->count();
        }

我希望能够$aircraftType->load('total_flights')在我序列化这个模型以发送到 Vue 时调用,就像我可以处理关系一样。我在这里错过了什么吗?我试图调用getAttributes实例上的方法,它获取值,但只有值。我想简单地将它包含在关系中。

<total-flights :data-aircraft-type="{{ $aircraftType->getAttribute('total_flights') }}"></total-flights>

理想情况下,我正在寻找一种withAttributes方法。

标签: phplaraveleager-loading

解决方案


如果我遇到您的问题,我想这应该可以完成工作:

$aircraft_flights = $aircraft->total_flights;

假设 $aircraft 是 Aircraft 的一个实例


推荐阅读