渴望加载Laravel Eloquent

时间:2014-02-22 23:59:17

标签: orm laravel eloquent

我有一个快速而直截了当的问题。在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个查询。

如果有人能够对此有所了解,我真的很感激。

1 个答案:

答案 0 :(得分:4)

  1. 这是你应该使用的;它将返回一个结果模型:

    $post = Post::with(array('user', 'comments.from'))->find($id);
    
  2. 这将返回一组结果(即使只有一个):

    $post = Post::with(array('user', 'comments.from'))->where('postID', $id)->get();
    
  3. 而不是方法2,您可能想要做的是:

    $post = Post::with(array('user', 'comments.from'))->where('postID', $id)->first();
    
  4. 方法1和3基本上可以得到完全相同的结果。方法1更具适应性,因为如果更改表的主键,它将继续工作。它也比其他两种方法更快,因为它不构建模型集合。

    顺便说一句,这与预先加载无关,因为这些函数在任何查询中都会起作用。

相关问题