Laravel追加属性给出内存错误

时间:2018-03-17 18:43:25

标签: laravel laravel-5 laravel-4 eloquent laravel-5.3

我正在尝试将产品价格属性附加到产品型号,但是当我打印时,它最终会出现内存错误。 当我对响应做dd时,它会给我一些查询构建器错误。 有人可以帮帮我吗?

我的数据库和模型如下:

我有三张表productsproduct_price& weight_units。 在[![product_price][1]][1]表中,我有product_id , price, weight, weight_unit_id,而weight_units我有unit

我的product_price模型

 public function weightUnit()
    {
        return $this->belongsTo('App\Models\WeightUnit');
    }

我的产品型号

protected $appends = ['product_price'];

 public function price(){
       return $this->hasMany(ProductPrice::class);
    }
 public function getProductPriceAttribute(){
        return $this->price()->with('weightUnit:id,unit');
    }

我的控制器

$data=   Product::take(2)->get();
        echo '<pre>';
        dd($data->toArray());

当我尝试打印它时会出现内存错误,当我执行dd时,我会看到屏幕截图中的内容。

1 个答案:

答案 0 :(得分:0)

$this->price()仅为您提供查询构建器实例,将其替换为$this->price 然后将->with(替换为->load(

return $this->price->load('weightUnit:id,unit');

急切加载在那里没有多大意义,你应该把它移到price()

return $this->hasMany(ProductPrice::class)->with('weightUnit:id,unit');