Laravel 关系执行多个查询

Laravel relationship executes multiple queries

我有三张表

users, role, user_role 

我已经添加了关系,但是当我 运行 以下内容时:

$user=User::where('id',2)
    ->with(['role'])->first();

我的查询日志显示执行了两个查询:

第一次查询:
select * from `users` where `id` = '2' limit 1

第二次查询:
select `roles`.*, `user_role`.`user_id` as `pivot_user_id`, `user_role`.`role_id` as `pivot_role_id` from `roles` inner join `user_role` on `roles`.`id` = `user_role`.`role_id` where `user_role`.`user_id` in ('2')

谁能帮我理解为什么它执行两个查询而不是一个查询?数据库是否优于关系,因为我需要在每个请求中执行,因为我将根据角色访问页面。

您想 select 具有 his/her 个角色的第一个用户用户。好吧,真的没有办法用一个查询来做到这一点。

Eloquent 构建器,正确地首先查询用户 table 以获取用户详细信息,然后连接 rolesuser_role tables 以获取该特定用户 ID 的角色详细信息。

我不明白这有什么不好。事实上,我相信你需要 2 个查询来实现你想要的。

即使您使用 DB facade,也需要这两个查询。如果您还有其他想法,请post您认为适合table工作的查询