Laravel关系执行多个查询

问题描述 投票:0回答:1

我有三个表

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')

谁能帮我理解为什么它的执行两个查询而不是一个?是DB比的关系更好,因为我需要在每次请求执行,因为我将访问基于角色的网页。

php laravel eloquent laravel-5.3
1个回答
2
投票

要选择与他/她的角色的第一个用户的用户。那么真的没有办法用一个查询来做到这一点。

能言善辩的建设者,这是正确的首先查询用户表,以获取用户详细信息,然后做了一个连接rolesuser_role表来获取特定用户ID的角色的详细信息。

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

即使你与DB门面做,那就需要这2个查询。如果你有别的想法,请发表您认为是适合这份工作的查询

© www.soinside.com 2019 - 2024. All rights reserved.