【问题标题】:Reducing Query Load Times By Limiting Results on Eloquent Relationship通过限制 Eloquent 关系的结果来减少查询加载时间
【发布时间】:2016-05-20 17:36:33
【问题描述】:

我有以下范围。

public function scopeWithPosts($query)
{
    return $query->with(
        ['posts' => function($query)  {
            $query->limit(2);   // Line 5
        }]
        // further eager loads
        // e.g. ['posts.*']
    );
}

我的关系如下:

public function posts()
{
    return $this->hasMany('Models\Post', 'user_id', 'user_id');
}

我正在尝试执行上述操作以减少查询的加载时间。问题是每当我尝试限制时,它似乎都不起作用。

例如,第 5 行我得到 1 个结果,如果我删除我得到 5 个结果。

任何想法我要去哪里错了吗?

提前致谢。

【问题讨论】:

    标签: php mysql laravel eloquent


    【解决方案1】:

    你已经测试过take方法了吗?

    $query->take(2);
    

    对于更精确的限制,您可以使用

    $query->skip(10)->take(2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 2023-03-06
      • 2019-11-22
      • 2014-12-10
      相关资源
      最近更新 更多