我有一个巨大的查询,有时需要我使用paginate(),其他时候需要我使用get()
。有没有办法在查询结束时创建某种if语句,以确定使用哪一个?有点像子查询。
我提出的其他解决方案是将分页数设置为一个非常高的数字以模仿get()
,但如果可以使用,我更倾向于以另一种方式执行此操作某种if语句,但我不确定如何弄清楚。
由于
答案 0 :(得分:2)
你可以提出条件。
e.g。假设你的数据库代码是这样的:
$data = DB::table('test')->get(); // or paginate
然后
$temp = DB::table('test');
if(condition)
{
return $temp->paginate();
} else {
return $temp->get();
}
如果你想检查什么类型的数据,它将返回(在控制器中)
if($data instanceof \Illuminate\Pagination\LengthAwarePaginator)
{
//it is a paginator object. write the code accordingly
} else {
// It is returning array.
}
虽然你应该进一步验证看看会发生什么。
您可以在paginator对象上调用items()
方法,以获取参考该特定页面的结果。
e.g。如果$data
是一个paginator对象,那么,
dd($data->items());
将项目打印为数组。 (items()
将结果集作为数组返回)