Laravel 4 - Eloquent:在访问之前是否可以查询所有关系?

时间:2013-09-21 20:04:56

标签: php database laravel laravel-4 eloquent

我正在尝试缓存数据库查询(及其关系),但在尝试使用Eloquent ORM后,我意识到只有在访问它们时才会查询这些关系 - 在我的情况下,在视图中。
  问题是控制器包含整个缓存过程,因为关系是通过视图访问的;这些关系从不缓存。

所以我一直在寻找一种方法来预先查询控制器中的每个关系,显而易见的解决方案是在控制器内手动访问每个关系,但它似乎不是最佳解决方案。

TL; DR :有没有办法在实际访问之前查询所有(的子集)Eloquent关系?

1 个答案:

答案 0 :(得分:0)

考虑急切的装载。

class Bar extends Eloquent
{
    public function foos()
    {
        return $this->hasMany('Foo');
    }
}

$bars = Bar::with('foos')->get();

$ bars现在包含在2个SQL查询中预加载所有Foos的所有条形图。