当前位置: 首页 > 知识库问答 >
问题:

热切的装载,雄辩的

干浩然
2023-03-14

我有一个简单明了的问题。在Laravel中使用雄辩的ORM时,以下哪项查询是首选查询?

$post = Post::with(array('user', 'comments.from'))->find($id);
$post = Post::with(array('user', 'comments.from'))->where('postID', $id)->get();

我正在努力寻找两者之间的区别-

postID是我在上面posts表中的主键。通过我的调试器,这两种性能几乎相同,每个都运行8个查询。

如果有人能解释一下,我真的很感激。

共有1个答案

壤驷棋
2023-03-14

>

$post = Post::with(array('user', 'comments.from'))->find($id);

这将返回结果的集合(即使只有一个):

$post = Post::with(array('user', 'comments.from'))->where('postID', $id)->get();

您可能想做的不是方法2,而是:

$post = Post::with(array('user', 'comments.from'))->where('postID', $id)->first();

方法1和方法3基本上会得到完全相同的结果。方法1的适应性更强,因为如果更改表的主键,它将继续工作。它也比其他两种方法更快,因为它不构建模型集合。

顺便说一下,这与急切加载无关,因为这些函数在任何查询上都可以正常工作。

 类似资料:
  • 我用的是Laravel 8。我有两个表,并试图使用ELOQUENT从两个表中选择特定的列: 但是,如果我将方法添加到模型中,则Laravel将为表返回。 如果我没有在模型上指定selects,Laravel将返回模型中的所有内容,以及表中的、。 如何同时从和表中进行选择,同时使用热切加载?

  • 我对雄辩的质询有意见。我正在使用渴望加载(一对多多态关系)来排序“historyable”。日期见下文。 我试着得到这样的结果 是否有可能运行嵌套懒惰渴望加载Laravel? 产品型号 历史模型 产品控制器 我有这样的数据库

  • 问题内容: 我想返回所有类别的所有项目。 此查询我现在返回的类别为1或2或3的项目。我需要返回的类别为1和2以及3的项目。 我怎样才能做到这一点? 问题答案: 试试这个: 使用查询将仅返回具有所有列出类别的项目。

  • 我有一个表事务与复合主键id,Nom,日期和一个表Cour与Nom作为主键和一个事务有关一个Cour。 我怎样才能得到一个有口才关系的特定交易的课程?

  • 在我的网站中,我有用户、角色和权限。 每个用户属于多个角色(例如User.php)和称为“role_user”的数据透视表 每个角色都属于许多权限(例如Role.php)和名为“permission\u Role”的透视表 我想以某种方式访问用户权限,但我似乎无法弄清楚。基本上,我需要这样的东西在User.php 这可能吗?请帮忙。谢谢你。

  • 我无法通过下面的示例了解如何快速加载。这是我当前的数据库,有两个表,Quotes:存储一般信息的地方,QuotesDetails:存储Quotes中每个Quote的详细信息的地方。 在模型中,我有以下结构: 引用。php QuotesDetails.php以下型号: 我使用了hasMany(引号中),因为每个引号可以有/显示3-4个quotesdetails。 在我的控制器中,我使用以下查询: 在