首页 > 解决方案 > 是否可以分页 DB::raw 查询?我得到:调用数组上的成员函数 paginate()

问题描述

是否可以对这样的 DB::raw 查询进行分页?我在加入的表中有相同的列名。当我在最后添加分页时,我得到“调用数组上的成员函数 paginate()”。

$basicQuery = DB::connection('mysql2')->select( 
            DB::raw(
                "
                SELECT
                `w`.`id`,
                `w`.`rodzaj`,
                `d`.`imie`,
                `d`.`nazwisko`,
                `d`.`firma`,
                `d`.`osoba`,
                `w`.`kwota`,
                `w`.`data`,
                `w`.`nazwa`,
                `p`.`nazwa` AS `partner`,
                `w`.`zmiana` AS `aktualizacja`,
                `s`.`status` AS `status`
            FROM `wniosek` AS `w`
            LEFT JOIN `dane` AS `d` ON `d`.`id` = `w`.`id`
            LEFT JOIN `partner` AS `p` ON `w`.`partner` = `p`.`id`
            LEFT JOIN `status` AS `s` ON `w`.`status` = `s`.`id`
            WHERE 
                `w`.`active` = '1'
            AND 
                `w`.`usun` = '0'
            ORDER BY 
                `w`.`data` DESC
            LIMIT 20"
            )
        );

标签: phpmysqlsqllaravel

解决方案


你不能做分页所以像array这样转换这个原始查询Query Builder

$basicQuery = DB::connection('mysql2')
    ->table('wniosek')
    ->select(
        'wniosek.id',
        'wniosek.rodzaj',
        'dane.imie',
        'dane.nazwisko',
        'dane.firma',
        'dane.osoba',
        'wniosek.kwota',
        'wniosek.data',
        'wniosek.nazwa',
        'partner.nazwa AS partner',
        'wniosek.zmiana AS aktualizacja',
        'status.status AS status'
    )
    ->leftJoin('dane','wniosek.id','=', 'dane.id')
    ->leftJoin('partner','wniosek.partner','=', 'partner.id')
    ->leftJoin('status','wniosek.status','=', 'status.id')
    ->where([
        'wniosek.active'=>'1',
        'wniosek.usun'=>'0',
    ])
    ->orderByDesc('wniosek.usun')
    ->paginate(20);

然后你可以做分页

参考链接

https://laravel.com/docs/8.x/queries#introduction

https://laravel.com/docs/8.x/pagination#paginating-query-builder-results


推荐阅读