Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel中分块联接查询_Php_Mysql_Laravel - Fatal编程技术网

Php 如何在laravel中分块联接查询

Php 如何在laravel中分块联接查询,php,mysql,laravel,Php,Mysql,Laravel,在我的Laravel应用程序中,以下查询可能会返回非常大的结果集: $data = $query->join('accommodation_rooms', 'accommodations.id', '=', 'accommodation_rooms.accommodation_id') ->join('discounts', 'accommodation_rooms.id', '=', 'discounts.accommodation_room_id') ->s

在我的Laravel应用程序中,以下查询可能会返回非常大的结果集:

$data = $query->join('accommodation_rooms', 'accommodations.id', '=', 'accommodation_rooms.accommodation_id')
    ->join('discounts', 'accommodation_rooms.id', '=', 'discounts.accommodation_room_id')
    ->select('accommodation_rooms.id')
    ->orderBy('discounts.amount', 'desc')
    ->select('discounts.amount', 'accommodations.*')
    ->groupBy('discounts.amount', 'accommodation_rooms.id');
return $data;
我想知道我如何能够更快地加载一部分数据,而只在稍后加载其余的数据,可能是使用一些分页机制或其他方法

鉴于数据是从API发送的,我想知道如何将这些数据分块。

谢谢。

为此,您可以使用分页方法

$data = $query->join('accommodation_rooms', 'accommodations.id', '=', 'accommodation_rooms.accommodation_id')
->join('discounts', 'accommodation_rooms.id', '=', 'discounts.accommodation_room_id')
->select('accommodation_rooms.id')
->orderBy('discounts.amount', 'desc')
->select('discounts.amount', 'accommodations.*')
->groupBy('discounts.amount', 'accommodation_rooms.id')->paginate(15);

您可以更改要在给定参数中提取的记录数,以对函数进行分页,例如15

即使使用分页,执行也需要40秒。我不能在这里使用分页,因为它不应该返回一个雄辩的实例。你可以使用chunk方法来创建链接。我认为你应该使用cursor(),在处理大型数据库时,它工作得很好