Laravel 雄辩的极限查询

Posted

技术标签:

【中文标题】Laravel 雄辩的极限查询【英文标题】:Laravel eloquent limit query 【发布时间】:2020-03-24 07:00:25 【问题描述】:

我有 3 个表 TAble、TableB 和 TableC。 每个都有 100 万个寄存器。

我有 Laravel 雄辩的查询。

  $list=    TableA::with([
            'TableB',
            'TableC'
        ])
            ->whereIn('field1',['A','B','C'])
            ->where('created_at','>=','2018-01-01') ->orderBy('fieldC', 'ASC')->orderBy('created_at', 'ASC')
            ->get()
            ->take(50) ;

TableA 有 TableB 和 TableC 这样的映射关系。

public function TableB()
    return $this->belongsTo('TableB', 'fk_id', 'id');


public function TableC()
  return $this->hasMany('TableC');

如何执行此查询限制“TableB”和“TableC”中的寄存器数量。 如果我使用 take() 它只会限制最终结果。

【问题讨论】:

limit() 将是一个“拍摄”,但由数据库完成 【参考方案1】:

你想做什么? 如果要分块处理数据,请使用

->chunk(50, function ($data) use ($variable) 
//process
);

如果您想在带有页面的表中显示数据,请使用分页。

【讨论】:

以上是关于Laravel 雄辩的极限查询的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 雄辩的查询

带有雄辩查询的 Laravel 分页

Laravel:自我 JOIN 的雄辩查询

Laravel 5 雄辩的查询混淆

Laravel 雄辩查询的高级 where

Laravel - 雄辩的 ORM 关系查询