php - 是否可以分页 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"
)
);
解决方案
你不能做分页所以像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
推荐阅读
- c# - 如何在 C++ 中调用 C# DLL?
- networking - 如何找出谷歌云 VPN 用于 IKEv1 的密码参数?
- scikit-learn - Sklearn 推荐的无监督学习集群算法
- java - 可以扩展通过 allocateDirect 方法创建的 ByteBuffer 吗?
- wordpress - 在 wordpress 中解码选项值
- python - 如何从字符串中删除解压后留下的字节串?
- terraform - Terraform resource_aws_vpc_endpoint Dns 列表为空
- javascript - 如何对嵌套数组中的所有元素求和?
- maven - mvn build 找不到 com.sun:tools:jar:1.6 osx
- java - 无法确定任务 ':gobblin-distribution:buildDistributionTar' 的依赖关系