php - Laravel 4.2 分页与复杂的数据库查询

标签 php mysql laravel pdo pagination

我是 Laravel 4.2 的新手。

我需要在我的 View 搜索结果页面中做一些分页。

我正在做的是在 Controller 中编写这段代码 -

public function getSpecials()
{
    $title = "Specials";

    
    $info = DB::table(DB::raw('`car` , `available_car`, `users`'))
                        ->select('car.car_maker', 'car.car_model', 'available_car.car_price', 'car.car_production_year', 'available_car.car_id', 'available_car.id', 'available_car.current_position')
                        ->where('available_car.car_id', '`car`.`car_id`')
                        ->where('available_car.is_sold', 'no')
                        ->whereRaw('`available_car`.`created_at` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()')
                        ->orderByRaw('WEEK(`available_car`.`created_at`) DESC')
                        ->orderBy('available_car.car_price', 'desc')
                        ->orderBy('users.last_paid_date', 'desc')
                        ->orderBy('available_car.created_at', 'desc')
                        ->distinct()
                        ->get();

    $pagination = Paginator::make($info, count($info), 5);


    //var_dump($pagination );
    
    
    return View::make('specials',compact('pagination'))->with('info',$info)->with('title',$title);
}

我想每页显示 5 个项目。所以我正在做这样的分页 -

$pagination = Paginator::make($info, count($info), 5);

但这里的问题是我在页面中完美地获取了分页号。 但是,All page 显示的是整个结果,而不是只显示 5 个项目。

这是输出。 (分页是每页 5 个项目,在我的例子中条目总数是 7)

First Page

第1页

Second Page

第2页

谁能帮帮我? 在此先感谢您的帮助。

最佳答案

只需对代码做一点小改动,laravel 会处理剩下的事情。

public function getSpecials()
{
    $title = "Specials";


    $info = DB::table(DB::raw('`car` , `available_car`, `users`'))
                        ->select('car.car_maker', 'car.car_model', 'available_car.car_price', 'car.car_production_year', 'available_car.car_id', 'available_car.id', 'available_car.current_position')
                        ->where('available_car.car_id', '`car`.`car_id`')
                        ->where('available_car.is_sold', 'no')
                        ->whereRaw('`available_car`.`created_at` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()')
                        ->orderByRaw('WEEK(`available_car`.`created_at`) DESC')
                        ->orderBy('available_car.car_price', 'desc')
                        ->orderBy('users.last_paid_date', 'desc')
                        ->orderBy('available_car.created_at', 'desc')
                        ->distinct()
                        ->paginate(5);

return View::make('specials',['info' => $info, 'title' => $title]);
}

View 中:

像这样迭代:

@if(!$info->isEmpty())

    @foreach($info as $i)
    do whatever you want
    @endforeach

@else
   no data to show....

@endif

{{$info->links()}}

关于php - Laravel 4.2 分页与复杂的数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26828010/

相关文章:

php - 安全登录表单,或者至少我希望如此

mysql - 如何在 LEFT OUTER JOIN 之后重复列中剩余行中的最后一个非空值

php - 使用 session 在网页中显示来自mysql数据库的数据

php - Laravel 5/流明请求 header ?

mysql - VB NET + 子字符串 + Mysql + 检查行

php - 从 MySQL 转储创建 Laravel 迁移文件

php - 无法让 Laravel 4 在本地主机上工作

php - 使用动态字段时发布复选框值

php - Mysql 查询获取共同好友计数并将其显示在 php 的表中

php - 两个网页上的 onChange 事件