【发布时间】:2021-11-23 07:57:05
【问题描述】:
我将把这个 Eloquent 查询转换为 Laravel 中的 DB 查询。
$users = User::withCount("addresses", "cars")->get();
以上是 Eloquent 并且运行良好。 但我想通过数据库查询来做到这一点。
我尝试如下操作,但我无法获得预期的结果。
$users = \DB::table("users")->join("addresses", "users.id", "=", "addresses.user_id")
->join("cars", "users.id", "=", "cars.user_id")
->selectRaw("users.id, users.name, count(addresses.id) as addresses_count, count(cars.id) as cars_count")
->groupBy("users.id", "users.name")
->get();
addresses_count 和cars_count 的结果值相同,是2的乘积。
任何帮助将不胜感激。
【问题讨论】:
-
每个匹配模型的组合都会产生一行,例如对于拥有汽车 C1 和 C2 以及地址 A1、A2、A3 的用户,您将获得 6 行:(U, C1, A1), ( U,C1,A2),(U,C1,A3),(U,C2,A1),(U,C2,A2),(U,C2,A3)。要“模仿”雄辩的行为,您可以考虑进行子查询或多个查询
标签: php mysql laravel eloquent laravel-query-builder