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"
}
]
}
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With