开发者社区> 问答> 正文

Laravel查询生成器中的条件WHERE语句不适用于LIMIT

对于我的数据库table,虽然下面的代码可以正常工作:

$sql = DB::table('table')->select('id')->orderBy('id', 'asc')->limit(50)->get();

有50行,则不会:

$sql = DB::table('table')->select('id');
$sql->orderBy('id', 'asc')->limit('50')->get();

因为它确实返回正确的行,但是它返回数据库本身中的所有行。我需要能够将其分开,因为我打算在if语句之间添加WHERE取决于用户输入的子句,如下所示(编辑:添加的代码类似于实际代码):

$foo = $request->input('foo');
$bar = $request->input('bar');

$sqls = DB::table('foobar')->select('id', 'name', 'age', 'zip_code');

if($foo === "foo") $sqls->where('age', '<', 31);
if($bar === "bor") $sqls->where('zip_code', '>', '12345');

$sqls->orderBy('age', 'asc')->limit(50)->get();

$return = '';

$sqls->each(function($sql) use (&$return){
     $return .= "<td> {$sql->id} </td>"
}

返回所有行,而不是限制为50行。

展开
收起
几许相思几点泪 2019-12-29 19:29:28 579 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Phoenix 全局索引原理与实践 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载