Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

php - Accessors on relationship not working in Laravel

I have two models Cart and Products

On products model I have an'accessor: amount

$appends = ['amount'];

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

But when I'm trying to get amount from relationship like:

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

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

It tell's me "Property [amount] does not exist on this collection instance."

What's the problem?

UPDATE

Cart relationship for products

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Is $row->products a hasMany relationship? If yes, then $row->products returns a Collection instance and you have to loop through $row->products like,

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...