Laravel 获取或分页子查询

Laravel get or paginate subquery

我有一个巨大的查询,有时需要我使用 paginate(),有时需要我使用 get()。有没有一种方法可以在查询结束时创建某种 if 语句来确定使用哪一个语句?有点像 where 子查询。

我想出的其他解决方案是将分页数设置为非常高的数字以模仿 get(),但如果可以使用某种 if声明,但我不确定如何弄清楚。

谢谢

你可以放条件句。

例如假设您的数据库代码是这样的:

$data = DB::table('test')->get(); // or paginate

然后

$temp = DB::table('test');

if(condition)
{
    return $temp->paginate();
} else {
    return $temp->get();
}

如果你想检查什么类型的数据,它正在返回(in controller

if($data instanceof \Illuminate\Pagination\LengthAwarePaginator)
{
    //it is a paginator object. write the code accordingly
} else {
    // It is returning array.
}

尽管您应该进一步验证以了解发生了什么。

另一条路线:

您可以调用分页器对象的 items() 方法来获取参考该特定页面的结果。

例如如果 $data 是一个分页器对象,那么,

dd($data->items());

会将项目打印为数组。 (items() returns 结果集作为数组)