是否可以分页 DB::raw 查询?我得到:调用数组上的成员函数 paginate()
Posted
技术标签:
【中文标题】是否可以分页 DB::raw 查询?我得到:调用数组上的成员函数 paginate()【英文标题】:Is it posssible to pagina DB::raw query? I am getting: Call to a member function paginate() on array 【发布时间】:2021-04-28 07:08:59 【问题描述】:是否可以对这样的 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"
)
);
【问题讨论】:
你试过$basicQuery->paginate(5)
吗?
是并得到:调用数组上的成员函数 paginate()
哦,那么你需要在查询生成器实例中转换它
怎么做?
【参考方案1】:
你不能在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
【讨论】:
以上是关于是否可以分页 DB::raw 查询?我得到:调用数组上的成员函数 paginate()的主要内容,如果未能解决你的问题,请参考以下文章