示例中,处理经常需要的SQL信息的最佳和最节省资源的方法是什么?
我的模型:
public function pageModification()
{
return $this->hasMany('PageModification','page_id','id');
}
public static function getPages($id)
{
return Page::with('pageModification')->where('page_id', '=', $id)->get();
}
我的结果如下所示:
array(36) [
'id' => integer 64
'title' => string (11) "lorem ipsum"
'content' => string (11) "lorem ipsum"
'post_page_modification' => array(11) [
array(3) [
'id' => integer 34
'post_id' => integer 64
'user_id' => integer 12
.....
]
现在通过user_id从我的用户表中获取真实用户名(名字,姓氏)的最佳方法是什么?一次调用最多可以发生 100 user_id,而且大多数/通常是相同的user_id。我有 100 次调用像"getUserNameById()"这样的函数来获取真实姓名吗?
我看到你已经在使用急切加载,现在准备好让你大吃一惊。
http://laravel.com/docs/4.2/eloquent#eager-loading
"您甚至可能急于加载嵌套关系:
$books = Book::with('author.contacts')->get();
将被预先加载,作者的联系人关系也会被加载。"
因此,只要确保正确设置了关系,然后您也可以急于加载。
return Page::with('pageModification.user')->where('page_id', '=', $id)->get();