如何在 DB::select(query) 上使用分页 - Laravel

Posted

技术标签:

【中文标题】如何在 DB::select(query) 上使用分页 - Laravel【英文标题】:How to use pagination on DB::select(query) - Laravel 【发布时间】:2020-01-08 04:52:12 【问题描述】:

我有一些查询,我只知道如何在 mysql (phpmyadmin) 上查询

我知道如果使用DB::select我们不能使用分页,所以我们需要更改为DB::table(some query)以使用分页。

但问题是我很困惑如何将我的查询转换为DB::table(some query)

这是我的代码

$daily = DB::select("
            SELECT
                employees.employee_name,
                COUNT(DISTINCT DATE(attendance.attendance_datetime)) as jumlah,
                locations.location_name,
                TIME(MIN(attendance.attendance_datetime)) as check_in,
                CASE
                    WHEN ISNULL(TIME(MIN(attendance.attendance_datetime))) THEN attendance_absence.remarks
                    WHEN TIME(MIN(attendance.attendance_datetime)) > '08:05:00' THEN (SELECT TIMEDIFF('08:05:00', MIN(TIME(attendance_datetime))))
                    WHEN TIME(MIN(attendance.attendance_datetime)) <= '08:05:00' THEN 'Good'
                    ELSE 'No Record'
                END as detail_telat,
                attendance_absence.remarks as remarks
            FROM
                employees
            LEFT JOIN attendance ON employees.employee_name = attendance.attendance_name AND DATE(attendance.attendance_datetime) = '$date'
            LEFT JOIN locations ON employees.location_id = locations.id
            LEFT JOIN attendance_absence ON  attendance_absence.employee_name = employees.employee_name AND attendance_absence.absences_date = '$date'
                WHERE locations.location_name LIKE '%'
            GROUP BY employees.employee_name
            ORDER BY employees.employee_name
        ")->paginate(3);

请帮我将我的查询转换为 eloquent 或查询生成器,或任何建议?

【问题讨论】:

How to use pagination with laravel DB::select query的可能重复 是的,伙计,但这是简单的查询,我需要帮助将我的查询转换为 laravel 上的 eloquent 或查询构建器 【参考方案1】:

目前,Laravel 无法有效地执行使用 groupBy 语句的分页操作。如果您需要使用 groupBy 与分页结果集,建议您查询数据库并手动创建分页器。

查看documentation

【讨论】:

以上是关于如何在 DB::select(query) 上使用分页 - Laravel的主要内容,如果未能解决你的问题,请参考以下文章

DB::Table 和 DB::Select 之间的区别

在 Laravel 4 中转义原始 SQL 查询

php

ci codeigniter 查询 获取 一条数据 db select get row_array()

有 DB::select() 时如何使用 laravel 关系?

如何在具有子查询的以下查询中不使用 DB