关系访问器在 Laravel 中不起作用
Accessors on relationship not working in Laravel
我有两个模型 Cart 和 Products
在产品型号上我有一个'accessor: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 returns 一个 Collection 实例,你必须遍历 $row->products like,
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
并获得每个产品的数量
我有两个模型 Cart 和 Products
在产品型号上我有一个'accessor: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 returns 一个 Collection 实例,你必须遍历 $row->products like,
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
并获得每个产品的数量