Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel分页不按条款处理组

Laravel分页不按条款处理组
EN

Stack Overflow用户
提问于 2014-04-14 19:29:08
回答 5查看 14.9K关注 0票数 9

看来,Laravel分页并不能很好地处理逐条分组的问题。例如:

代码语言:javascript
运行
AI代码解释
复制
$users = Subject::select(DB::raw('subjects.*, count(user_subjects.id) as total_users'))
            ->join('user_subjects', 'user_subjects.subject_id', '=', 'subjects.id')
            ->whereNull('user_subjects.deleted_at')
            ->groupBy('subjects.id')
            ->orderBy('subjects.updated_at', 'desc')
            ->paginate(25);

生产

代码语言:javascript
运行
AI代码解释
复制
select subjects.*, count(user_subjects.id) as total_users 
from `subjects` inner join `user_subjects` on `user_subjects`.`subject_id` = `subjects`.`id` 
where `subjects`.`deleted_at` is null and `user_subjects`.`deleted_at` is null 
group by `subjects`.`id` 
order by `subjects`.`updated_at` desc

注意,查询中没有limit子句。

如果查询中没有group by子句,可以正常工作:

代码语言:javascript
运行
AI代码解释
复制
$users = Subject::select(DB::raw('subjects.*, count(user_subjects.id) as total_users'))
            ->join('user_subjects', 'user_subjects.subject_id', '=', 'subjects.id')
            ->whereNull('user_subjects.deleted_at')
            ->orderBy('subjects.updated_at', 'desc')
            ->paginate(25);

产生了以下查询:

代码语言:javascript
运行
AI代码解释
复制
select subjects.*, count(user_subjects.id) as total_users from `subjects` 
inner join `user_subjects` on `user_subjects`.`subject_id` = `subjects`.`id`
where `subjects`.`deleted_at` is null and `user_subjects`.`deleted_at` is null 
order by `subjects`.`updated_at` desc 
limit 25 offset 0

有人知道我该怎么解决这个问题吗?

EN

回答 5

Stack Overflow用户

发布于 2016-01-19 01:57:36

查看文档https://laravel.com/docs/5.2/pagination

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

票数 12
EN

Stack Overflow用户

发布于 2019-12-04 02:40:03

我知道这是一个老问题,通过我分享我的解决方案,供将来参考。

我成功地编写了一个基于此链接的函数,它完成了确定复杂查询分页的繁重工作。只要传递'QueryBuilder‘,它就会返回分页对象/集合。

此外,此过程可以跟踪和维护除page=以外的其他参数。

代码语言:javascript
运行
AI代码解释
复制
public function mergeQueryPaginate(\Illuminate\Database\Eloquent\Builder $query): \Illuminate\Pagination\LengthAwarePaginator
    {
        $raw_query = $query;
        $totalCount = $raw_query->get()->count();

        $perPage = request('per-page', 10);
        $page = request('page', 1);
        $skip = $perPage * ($page - 1);
        $raw_query = $raw_query->take($perPage)->skip($skip);

        $parameters = request()->getQueryString();
        $parameters = preg_replace('/&page(=[^&]*)?|^page(=[^&]*)?&?/', '', $parameters);
        $path = url(request()->getPathInfo() . '?' . $parameters);

        $rows = $raw_query->get();

        $paginator = new LengthAwarePaginator($rows, $totalCount, $perPage, $page);
        $paginator = $paginator->withPath($path);
        return $paginator;
    }
票数 1
EN

Stack Overflow用户

发布于 2016-03-29 22:19:05

这对我来说用的是拉拉5.2

代码语言:javascript
运行
AI代码解释
复制
Select(\DB::RAW("assignment_descendant_child.assignment_descendant_child_id, assignment_descendant_child.assignment_descendant_child_name, COUNT(assignment_descendant.assignment_descendant_id) as xNum"))
            ->leftJoin(
                'assignment_descendant',
                'assignment_descendant.assignment_descendant_child_id',
                '=',
                'assignment_descendant_child.assignment_descendant_child_id'
            )
            ->orderBy('assignment_descendant_child_name')
            ->groupBy('assignment_descendant_child.assignment_descendant_child_id')
            ->paginate(\Config::get('constants.paginate_org_index'))
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23074147

复制
相关文章
React篇(020)-如何在 React 中创建组件?
答案:有两种可行的方法来创建一个组件: 1. Function Components: 这是创建组件最简单的方式。这些是纯 JavaScript 函数,接受 props 对象作为第一个参数并返回 React 元素:
齐丶先丶森
2022/05/12
2.9K0
使用React 360创建虚拟现实体验
这真的可能吗?是的,随着React 360的引入,现在可以用JavaScript来创建虚拟现实体验。
徐小夕
2021/06/08
1.6K0
使用React 360创建虚拟现实体验
图像全景拼接
import cv2 import numpy as np def sift_keypoints_detect(image): gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) sift=cv2.xfeatures2d.SIFT_create() keypoints,features=sift.detectAndCompute(image,None) keypoints_image=cv2.
裴来凡
2022/05/29
7380
图像全景拼接
用 Gatsby 创建一个博客
Gatsby 是一个令人难以置信的静态站点生成器,它允许使用React作为渲染引擎引擎来搭建一个静态站点,它真正具有现代web应用程序所期望的所有优点。它通过在构建时通过服务器端渲染将动态的 react 组件呈现为静态 HTML 内容。这意味着您的用户可以获得静态站点的所有好处,比如不使用JavaScript、搜索引擎友好性、非常快的加载速度等等,也并没有失去现代web所期望的活力和交互性。一旦呈现为静态 HTML,客户端站点的React和JavaScript会接管它并添加动态的内容。 Gatsby 最近发布了v1.0.0,推出了很多新特性。包括(但不限于)使用GraphQL创建内容查询的能力,与各种cms集成——包括WordPress、Contentful、Drupal等等。还有基于路由的代码分布使得用户体验更佳。在这篇文章中,我们将深入探讨 Gatsby 和一些新特性,并创建一个静态博客。让我们开始吧!
疯狂的技术宅
2019/03/27
2.5K0
用 Gatsby 创建一个博客
apap图像全景拼接
图像配准(apap)是将两张场景相关的图像进行映射,寻找其中的关系,多用在医学图像配准、图像拼接、不同摄像机的几何标定等方面,其研究也较为成熟。OpenCv中的stitching类就是使用了2007年的一篇论文(Automatic panoramic image stitching using invariant features)实现的。虽然图像配准已较为成熟,但其实其精度、鲁棒性等在某些场合仍不足够,如光线差异很大的两张图片、拍摄角度差异很大的图片等。2013年,Julio Zaragoza等人发表了一种新的图像配准算法Apap(As-Projective-As-Possible Image Stitching with Moving DLT),该算法的效果还是不错的,比opencv自带的auto-stitch效果要好。而2015年也有一篇cvpr是介绍图像配准(Non-rigid Registration of Images with Geometric and Photometric Deformation by Using Local Affine Fourier-Moment Matching),其效果貌似很牛,但没有源码,难以检验。
全栈程序员站长
2022/11/09
1.2K0
apap图像全景拼接
你的博客用不着什么JavaScript框架
今年年初,我终于决定将自己的网站从基于 PHP 的 CMS 移植到基于 JavaScript 的静态网站生成器(SSG)了。原因如下:
深度学习与Python
2020/07/30
4.1K0
Gatsby中怎么使用MDX?
MDX 是一种文档格式,可以在 Markdown 文档中无缝地插入 JSX 代码。
Learn-anything.cn
2021/12/02
1.4K0
Insta360 Studio :360度全景图制作工具
Insta360 Studio是一款强大的360度全景图制作工具,可以将任何图片和视频转换为360°全景样式,拥有左右结构和上下结构的不同视角,还可以为全景视频、照片进行后期处理,具有强大的关键帧录屏功能。
啾咪啾咪
2022/09/30
3.1K0
Gatsby中怎么使用emotion?
用 JavaScript 语法来写 css,主要用于两个框架:agnostic 和 React。下面是用于 React 框架的简单示例:
Learn-anything.cn
2021/12/02
1.3K0
Gatsby中怎么加载图片?
StaticImage 是 gatsby-plugin-image 提供的组件,类似html 中的 img 标签,可以在页面中直接使用。
Learn-anything.cn
2021/12/03
3K0
如何在 React 中引入 less?
本文主要写如何在 React 中引入 less 。因为 less 和 css 非常像,因此很容易学习。而且 less 仅对 css 语言增加了少许方便的扩展,这就是 less 如此易学的原因之一。
子舒
2022/06/09
3.9K0
2021 年你应该尝试的 8 个 React 库
代表了一种开发功能强大的 react.js 组件的全新方式,这些组件在完全可定制的同时开箱即用。
青梅煮码
2023/02/18
1.6K0
如何在js中创建对象
七夕临近了,没有对象的来创建一个吧 使用对象字面量: const o = { name: "zehan", greeting() { return `Hi, 我是${this.name}`; } }; o.greeting(); // "Hi, zehan" 使用构造函数: function Person(name) { this.name = name; } Person.prototype.greeting = function () { return `Hi, 我是
ZEHAN
2020/09/23
7.7K0
如何在Dynamo中创建UI
本文介绍了如何在Dynamo中创建UI,通过使用WPF技术实现了窗口的创建和交互。首先介绍了IronPython和Dynamo的基础知识,然后讲解了实现原理和准备工作。最后通过具体的操作步骤和代码示例讲解了如何在Dynamo中创建UI。
企鹅号小编
2018/01/05
2.1K0
如何在Dynamo中创建UI
如何在Mac中创建MiniKube
Minikube是一个工具,可以在本地轻松运行Kubernetes。 Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户使用。
方志朋
2022/05/08
2.5K0
如何在Mac中创建MiniKube
在React 中,如何创建refs?
在类组件中,可以使用 React.createRef() 方法来创建 ref 对象。通常,在组件的构造函数中将 ref 赋值给类的实例属性。
王小婷
2023/10/10
2600
Gatsby 中怎么加载使用文件资源?
把文件导入到Gatsby项目中使用,有两种方式:import 和 static folder.
Learn-anything.cn
2021/12/02
1.2K0
Python实现图像的全景拼接
图像的全景拼接,即“缝合”两张具有重叠区域的图来创建一张全景图。其中用到了计算机视觉和图像处理技术有:关键点特征检测、局部不变特征、关键特征点匹配、RANSAC(Random Sample Consensus,随机采样一致性)和透视变形。
用户8544541
2022/01/27
1.5K0
Python实现图像的全景拼接
点击加载更多

相似问题

如何在Android中创建全景360视图

10

如何从360度全景图创建视图。(如街景)

11

360°全景图像拼接实现

16

React Native 360/全景查看器

173

Swift 360图像:如何在全景图像中添加按钮

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文