首页 > 解决方案 > 关系访问器在 Laravel 中不起作用

问题描述

我有两个模型购物车和产品

在产品型号上,我有一个“访问器”:amount

$appends = ['amount'];

public function getAmountAttribute(){
    return $this->price * $this->taxe;
}

但是当我试图从关系中获得金额时:

$cart = Cart::where('id',$uid)->with('products')->get();

foreach($cart as $row){
    print_r($row->products->amount);
}

它告诉我“此集合实例上不存在属性 [数量]。”

有什么问题?

更新

产品的购物车关系

public function products(){
    return $this->hasMany(Product::class,'id','product_id');
}

标签: phplaravelaccessor

解决方案


$row->productshasMany 关系吗?如果是,则 $row->products 返回一个 Collection 实例,您必须遍历 $row->products ,例如,

foreach($cart as $row){
    $row->products->each(function($product){
        print_r($product->amount);
    });
}

推荐阅读