【问题标题】:Laravel 4 - Eloquent: Is it possible to query all relations before accessing them?Laravel 4 - Eloquent:是否可以在访问之前查询所有关系?
【发布时间】:2013-09-27 00:55:37
【问题描述】:

我正在尝试缓存数据库查询(及其关系),但在尝试了 Eloquent ORM 之后,我意识到只有在访问关系时才会查询这些关系——在我的例子中,是在视图中。
问题是控制器包含整个缓存过程,并且由于关系是通过视图访问的;这些关系从不缓存。

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

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

【问题讨论】:

  • 您在寻找Eager Loading吗?我认为 Eager/Lazy 加载已经足够优化了。

标签: php database laravel laravel-4 eloquent


【解决方案1】:

查看预加载。

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

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

$bars 现在包含在 2 个 SQL 查询中预加载所有 Foo 的所有 Bars。

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 2013-10-03
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2015-01-21
    • 1970-01-01
    相关资源
    最近更新 更多