在Laravel手动查询中不能使用SQL_CALC_FOUND_ROWS和FOUND_ROWS()吗?

时间:2016-03-04 12:24:16

标签: php mysql laravel laravel-5.2

我正在使用Laravel 5.2开发一个数据库驱动的网站。我正在使用Laravel的手动查询构建器。

我想要做的是在第一个查询中使用SQL_CALC_FOUND_ROWS,然后在第二个查询中选择FOUND_ROWS()。但它不能正常工作。请参阅下面的方案。

$param = array();
$sql = "SELECT SQL_CALC_FOUND_ROWS `report_items`.`id`,`items`.`name` as `item_name`,`items`.`id` as `item_id`,`items`.`item_code`,`report_items`.`created_at`";
$sql .= ",`users`.`name` as `username`,`users`.`id` as `user_id`";
$sql .= " FROM `report_items` INNER JOIN `items` ON `items`.id=`report_items`.`item_id`";
$sql .= " INNER JOIN `users` ON `users`.`id`=`report_items`.`user_id`";
$sql .= " WHERE 1=1";

$sql .= " LIMIT ?,?";
$param[] = (int)$offset;
$param[] = (int)$limit;

$rows = DB::select($sql,$param);
$count = DB::select("SELECT FOUND_ROWS() as `row_count`")[0]->row_count;

如您所见,我想在第二个查询中检索找到的行。但它没有按预期工作。

第一个查询实际上返回3行。但是当我从第二个查询中检索结果时,行数始终为1.

我的查询有什么问题?

1 个答案:

答案 0 :(得分:0)

您可以立即尝试更新Laravel。因为您的代码可在Laravel 5.5及更高版本中使用。

此外,您还可以通过模型查询使用FOUND_ROWS。例如:

com.firebase.ui.auth.FirebaseUiException: Provider error