可以在模型中使用预加载吗? Laravel
Can eager loading be used in a model? Laravel
例如主页控制器:
public function index(){
$proditem = Category::with('products')->get();
return view('index', compact('proditem'));
}
通过类别模型,我使用 eloquent 关系从产品模型中检索数据。
产品有很多图片,但是对于卡片,我在产品模型中使用以下 link 显示第一张:
public function cardImage()
{
return $this->hasOne(ProductImage::class)->where('position', 1);
}
现在我不知道如何在这里使用预先加载。毕竟如果我用在Category上,会报错,因为在Category里没有这种关系,但是在Product.
此外,Laravel N + 1 Query Detector 包建议使用预先加载,但我不知道在哪里写它。
您可以使用 nested eager loading:
$proditem = Category::with('products.cardImage')->get();
例如主页控制器:
public function index(){
$proditem = Category::with('products')->get();
return view('index', compact('proditem'));
}
通过类别模型,我使用 eloquent 关系从产品模型中检索数据。 产品有很多图片,但是对于卡片,我在产品模型中使用以下 link 显示第一张:
public function cardImage()
{
return $this->hasOne(ProductImage::class)->where('position', 1);
}
现在我不知道如何在这里使用预先加载。毕竟如果我用在Category上,会报错,因为在Category里没有这种关系,但是在Product.
此外,Laravel N + 1 Query Detector 包建议使用预先加载,但我不知道在哪里写它。
您可以使用 nested eager loading:
$proditem = Category::with('products.cardImage')->get();