【发布时间】:2019-03-12 12:39:03
【问题描述】:
在 Laravel 上,运行任何 Auth 函数来检索经过身份验证的用户 Auth::user()、Auth::check() 或 Auth::id(),总是会生成以下查询:
select * from `users` where `id` = 1 limit 1
这在很多情况下可能更有效,因为我只是想知道用户是否经过身份验证。
通过使用Auth::id(),查询应至少优化为select id from,而不是select * from。
有没有办法避免查询运行或至少改进它?
【问题讨论】:
-
COUNT(*)比COUNT(id)快可能是类似的概念。我不知道,只是一个想法。 -
使用sessions存储用户数据。
-
@vivek_23 session 是一个选项,但我更愿意依赖 Laravel 正确的身份验证方法。
-
您确定它在调用 Auth::id() 时使用 'select * from
userswhereid= 1 limit 1' 查询;我怀疑它是否一直在访问 db,它会从任何其他方式获取数据 -
你能解释一下给定查询的问题吗?如果使用会话来存储 ID,如果 ID 尚未存在于数据库中,它如何进入那里 - 所以
COUNT将始终返回 1,这样您就可以完全避免该查询
标签: php database laravel laravel-5 laravel-authorization