我正在尝试返回特定列,包括reviews_count 列。
这是未优化的查询(工作):
Model::withCount('reviews')->get();
Run Code Online (Sandbox Code Playgroud)
这是我试图实现的目标(不起作用):
Model::withCount('reviews')->select('id','name','reviews_count')->get();
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能使用 eloquent 在选择查询中包含reviews_count?
Muh*_*kur 13
该withCount方法将添加一个额外的自定义选择,因此无需将其包含在您的选择方法中。只需将select方法放在 之前withCount,如下例所示:
Model::select('id','name')->withCount('reviews')->get();
Run Code Online (Sandbox Code Playgroud)
上面将生成以下查询:
select "id", "name", (select count(*) from "reviews" where "invoices"."id" = "reviews"."invoice_id") as "reviews_count" from "invoices"
Run Code Online (Sandbox Code Playgroud)
如果将该select方法放置在其他选择之后,例如withCount,它将覆盖或替换它们。另一种方法是使用该addSelect方法,但您仍然需要删除默认的选择,如下所示:
Model::select([])->withCount('reviews')->addSelect('id','name')->get();
Run Code Online (Sandbox Code Playgroud)