我是Laravel的新手。我只是想查询变量,然后根据需要附加约束。
这是控制器:
public function index (Request $request)
{
$limit = 5;
$query_params = $request->query();
if(isset($query_params['limit'])){
$limit = $query_params['limit'];
}
//This chained query works.
$query = DB::table('users')->where('id', '>', '23')->paginate($limit);
//This one doesn't work
/*$query = DB::table('users');
$query->where('id', '>', '23');
$query->paginate($limit);*/
//also tried with @btl suggestion and with following code:
/*$query = DB::table('users')->where('id', '>', '23');
$query->paginate($limit);*/
return $query;
}
它传达了这个错误:
"message": "Object of class Illuminate\\Database\\Query\\Builder could not be converted to string",
"exception": "ErrorException",
"file": "/home/sms/laraveresources/vendor/symfony/http-foundation/Response.php",
"line": 399,
任何想法如何实现它?。
我没有找到有关在官方文档上向查询添加条件子句的示例。
我终于开始工作了。我必须在一个变量中为查询构建和添加条件,但是在一个单独的变量中对它进行分页。以下代码有效。
public function index (Request $request)
{
$limit = 5;
$query_params = $request->query();
if(isset($query_params['limit'])){
$limit = $query_params['limit'];
}
$query = DB::table('users');
if(isset($query_params['sort'])){
$sort = $query_params['sort'];
$direction = 'ASC';
if(isset($query_params['direction'])){
$direction = $query_params['direction'];
}
$query->orderBy($sort, $direction);
}
$query2 = $query->paginate($limit);
return $query2;
}
提前致谢。
答案 0 :(得分:3)
您还需要将$query->where('id', '>', '23');
分配给变量。 where
返回带有子句的模型实例,它因未被赋值给变量而丢失。
尝试以下方法:
$query = DB::table('users');
$query = $query->where('id', '>', '23');
$query->paginate($limit);
答案 1 :(得分:0)
您missing
将查询分配给变量。这样做 -
$query = DB::table('users');
$query = $query->where('id', '>', '23');
$query = $query->paginate($limit);
return $query;
或 -
$query = DB::table('users');
$query = $query->where('id', '>', '23');
return $query->paginate($limit);