我有两个类,Product
和ProductFormat
。它们之间的关系已经被正确定义,我的Product
拥有多个ProductFormat
。
public function formats()
{
return $this->hasMany(ProductFormat::class);
}
当我尝试按照文档(https://laravel.com/docs/5.6/eloquent-relationships#eager-loading)中的方式,使用特定列来预载入关联关系时,它并没有按照预期工作。
例如,当我执行以下操作时:
Product::with('formats:id,upc')->get();
我收到的产品,格式空空如也。
我得到我的产品,到处都是空白格式。
{
id: 1,
formats: [ ]
}
然而,如果我这样做:
Product::with('formats')->get();
我得到了预期的格式,但有太多不必要的列。{
id: 1,
formats: [
{
id: 1,
upc: "101862422191",
weight: 8.46,
weight_unit: "kg"
}
]
}
$product->formats
正确获取关联。 - Chin Leung$users = App\Book::with('author:id,name')->get();
是一个belongsTo()
关系,而你正在使用一个hasMany()
,可能就是这个原因。 - Asur