可以在模型中使用预加载吗? 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();