Laravel Eloquent 获取数据的问题:以下两种操作方式,哪种更优?请大家指点一下!多谢!

第一种方式:先获取数据,统一送给页面,页面使用数据

控制器:
$scores = $user->scores;
return view('user.index', compact('user','scores'));
页面:
{{ $scores->english }}
{{ $scores->math }}

第二种方式:页面使用数据的时候再获取数据

控制器:
return view('user.index', compact('user'));
页面:
{{ $user->scores->english }}
{{ $user->scores->math }}

PS:上面的两个代码,只是举例来说明我的想法,不在意语法正确

这两种方式中,是不是第一种方式,更好一些?只获取一次数据,页面都可以使用?

而第二种方法,每用一次数据,都要取一次?

可能形容我的想法的代码不太直观,见谅!

请大家指点一下!多谢!

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
Epona
最佳答案

我一般使用第二种,可以通过 eager Loading 来获取数据避免 N + 1 的查询问题。

$users = User::with('roles')->get();

另外你第一种的话 单独的 roles 不太好确定对应的用户吧。

4年前 评论
Epona (作者) 4年前
HEPING (楼主) 4年前
HEPING (楼主) 4年前
讨论数量: 3
Epona

我一般使用第二种,可以通过 eager Loading 来获取数据避免 N + 1 的查询问题。

$users = User::with('roles')->get();

另外你第一种的话 单独的 roles 不太好确定对应的用户吧。

4年前 评论
Epona (作者) 4年前
HEPING (楼主) 4年前
HEPING (楼主) 4年前

第2

4年前 评论
半人间 (作者) 4年前
HEPING (楼主) 4年前
HEPING (楼主) 4年前

有什么区别其实你用debugbar看一下sql就知道了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!