关系访问者不在Laravel工作



我有两个型号Cart和Products

在产品型号上,我有一个附件: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');
}

$row->products是hasMany关系吗?如果是,则$row->products返回一个Collection实例,您必须循环通过$row->等产品

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

您需要迭代购物车的产品

foreach ($cart as $row) {
foreach($row->products as $product) {

dd($product->amount);
}
}

在您的情况下,如果foreach中的dd($row->products),您将获得一个没有属性amount的产品集合,因此您需要迭代$cart->products并获得每个产品的数量

最新更新