Gga*_*Gga 6 php count laravel eloquent
我想查询我的Laravel模型中使用雄辩的,可能需要匹配一些where子句,那么结果take和skip预设号码.
这本身不是问题,但我还需要知道在使用take和skip减少结果集之前在查询中找到的行数 - 所以原始匹配数可能是表中的每一行不使用where子句或使用其中一些子句.
我想做的事情可以通过两次查询来完成,第一次省略" ->take($iDisplayLength)->skip($iDisplayStart)"并计算,但这看起来很麻烦.
有什么想法吗?
$contacts = Contact::where(function($query) use ($request)
{
if (!empty($request['firstname'])) {
$query->where(function($query) use ($request)
{
$query->where('firstname', 'LIKE', "%{$request['firstname']}%");
});
}
if (!empty($request['lastname'])) {
$query->where(function($query) use ($request)
{
$query->where('lastname', 'LIKE', "%{$request['lastname']}%");
});
}
})
->take($iDisplayLength)->skip($iDisplayStart)->get();
$iTotalRecords = count($contacts);
Run Code Online (Sandbox Code Playgroud)
Jar*_*zyk 20
您可以在同一查询中使用countthen get.
顺便说一句,你的整个查询有点复杂.它导致这样的事情:
select * from `contacts` where ((`firstname` like ?) and (`lastname` like ?)) limit X, Y
Run Code Online (Sandbox Code Playgroud)
Closure in where用于进行这样的查询,例如:
select * from table where (X or Y) and (A or B);
Run Code Online (Sandbox Code Playgroud)
总结一下,你需要这个:
$query = Contact::query();
if (!empty($request['firstname'])) {
$query->where('firstname', 'like', "%{$request['firstname']}%");
}
if (!empty($request['lastname'])) {
$query->where('lastname', 'like', "%{$request['lastname']}%");
}
$count = $query->count();
$contacts = $query->take($iDisplayLength)->skip(iDisplayStart)->get();
Run Code Online (Sandbox Code Playgroud)