将两个 Laravel 查询与联合合并 - 分页不起作用

时间:2021-03-31 13:10:07

标签: laravel eloquent

我有两个大型查询(它们来自两个 SQL Server 视图),我需要将它们合并以显示在一个表中,并且能够进行排序和搜索。有几百万行,所以分页是必须的。这两个查询包含不同的数据,但格式设置为适合同一个表,并且行根据排序相互穿插。

// Trivial example for demonstration
$queryA = ModelA::select("A, B, C");
$queryB = ModelB::select("A, D as B, C");

$queryA->union($queryB);

$queryA->where("A", "=", "search");

return $queryA->paginate(5);

分页似乎不起作用。我从两个查询中都得到了所有结果。是否可以使用 Eloquent 对这些结果进行分页,而不必->get() 整个结果集?

2 个答案:

答案 0 :(得分:0)

尝试使用此代码

$queryA = ModelA::select("A, B, C");
$queryB = ModelB::select("A, D as B, C");

$queryA->where("A", "=", "search");

$query = $queryA->unionAll($queryB);

return $query->paginate(5);

答案 1 :(得分:0)

两个选择语句都是错误的。

试试这个

$queryB = ModelB::select('A as B', 'D as C');
    $queryA = ModelA::select('A', 'B', 'C')
    ->where("A", "=", "search")
    ->union($queryB)
    ->paginate(15);
    
    
    return $queryA;