Issue
I have two classes, Product
and ProductFormat
. The relationship is defined properly, my Product hasMany
ProductFormat.
public function formats()
{
return $this->hasMany(ProductFormat::class);
}
When I'm trying to eager load the relationship with specific columns, as followed in the documentation (https://laravel.com/docs/5.6/eloquent-relationships#eager-loading), it's not working as expected.
For example, when I do the following:
Product::with('formats:id,upc')->get();
I get my products, with empty formats everywhere.
{
id: 1,
formats: [ ]
}
However, if I do the following:
Product::with('formats')->get();
I get the expected formats, but it has too many non needed columns.
{
id: 1,
formats: [
{
id: 1,
upc: "101862422191",
weight: 8.46,
weight_unit: "kg"
}
]
}
Solution
You always need foreign key/primary key, involved in the relation, to be selected. fetch product_id too in eager load and it will work
Product::with('formats:id,upc,product_id')->get();
Answered By - Usman Jdn
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.