我有一个快速而直截了当的问题。在Laravel中使用Eloquent ORM时,首选哪些查询?
$post = Post::with(array('user', 'comments.from'))->find($id);
$post = Post::with(array('user', 'comments.from'))->where('postID', $id)->get();
我正在努力找到 - > find和 - >之间的区别。急切加载。
postID是我上面帖子表中的主键。两个性能几乎完全相同,通过我的调试器,每个运行8个查询。
如果有人能够对此有所了解,我真的很感激。
答案 0 :(得分:4)
这是你应该使用的;它将返回一个结果模型:
$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更具适应性,因为如果更改表的主键,它将继续工作。它也比其他两种方法更快,因为它不构建模型集合。
顺便说一句,这与预先加载无关,因为这些函数在任何查询中都会起作用。