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 结果集作为数组)
我有一个巨大的查询,有时需要我使用 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 结果集作为数组)