Laravel 如何使用 Eloquent 获取对象的行号?

2023-12-09

我想根据用户的创建日期了解用户的位置。我该如何使用 Eloquent 来做到这一点?

我希望能够做这样的事情:

User::getRowNumber($user_obj);

我想你想要 MySQL 解决方案,所以你可以这样做:

DB::statement(DB::raw('set @row:=0'));
User::selectRaw('*, @row:=@row+1 as row')->get();
// returns all users with ordinal 'row'

所以你可以实现这样的事情:

public function scopeWithRowNumber($query, $column = 'created_at', $order = 'asc')
{
    DB::statement(DB::raw('set @row=0'));

    $sub = static::selectRaw('*, @row:=@row+1 as row')
        ->orderBy($column, $order)->toSql();

    $query->remember(1)->from(DB::raw("({$sub}) as sub"));
}

public function getRowNumber($column = 'created_at', $order = 'asc')
{
    $order = ($order == 'asc') ? 'asc' : 'desc';

    $key = "userRow.{$this->id}.{$column}.{$order}";

    if (Cache::get($key)) return Cache::get($key);

    $row = $this->withRowNumber($column, $order)
        ->where($column, '<=',$this->$column)
        ->whereId($this->id)->pluck('row');

    Cache::put($key, $row);

    return $row;
}

这需要从表中选择所有行,直到找到您要查找的行,然后仅选择该特定行号。

它会让你这样做:

$user = User::find(15);

$user->getRowNumber(); // as default ordered by created_at ascending

$user->getRowNumber('username'); // check order for another column

$user->getRowNumber('updated_at', 'desc'); // different combination of column and order

// and utilizing the scope:
User::withRowNumber()->take(20)->get(); // returns collection with additional property 'row' for each user

由于此范围需要原始语句设置@row每次为0,我们使用缓存1分钟以避免不必要的查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 如何使用 Eloquent 获取对象的行号? 的相关文章

  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • Blade中的Section和Stack有什么区别?

    我们可以使用一个section定义一些 HTML 然后yield那在其他地方 那么为什么我们有堆栈呢 https laravel com docs 5 2 blade stacks https laravel com docs 5 2 bl
  • Laravel 5.2:如何从自己的事件监听器访问请求和会话类?

    In Laravel 5 2 我添加了我的事件监听器 到app Providers EventServiceProvider php like protected listen Illuminate Auth Events Login gt
  • Carbon 两个日期之间的时间差,格式为 hh:mm:ss

    我试图弄清楚如何获取存储在数据库中的两个日期时间字符串 并将其转换为时间格式的差异 hh mm ss 我在看diffForHumans 但这确实给出了我想要的格式并返回类似的东西after ago ETC 这很有用 但不适用于我想做的事情
  • Laravel 保存一对多关系

    我在 Laravel 中建立了以下关系 OrderStatus Model hasMany Order Order Model belongsTo OrderStatus 数据库设置为orders表和一个order statuses桌子 这
  • 无法在有状态组件根元素上使用 v-for,因为它呈现多个元素?

    app js var Users template tr th list idx th td list id td tr data function return UsersData get data from query var main
  • Laravel 4:Facade 与 DI(何时使用)

    我的理解是 外观被用作依赖注入的替代方案 如果我错了 请纠正 目前尚不清楚的是何时应该使用其中之一 每种方法的优点 缺点是什么 我应该如何确定何时使用其中之一 最后 为什么不两者都使用呢 我可以创建一个引用接口的外观 貌似Sentry 2就
  • Laravel 插入三向数据透视表

    Summary 我正在构建音乐发现服务 我的问题是 如何将数据插入三向数据透视表 标签 跟踪 用户 Schema 我看到了这个架构在 LaravelSD http www laravelsd com share WNmzz8 它由六个主表
  • Laravel 中无效后防止重定向到主页

    我正在使用 Laravel 5 3 开发 RESTful API 因此我正在使用我的控制器测试一些功能和请求 我需要做的一件事是在数据库中添加字段之前验证用户发送的请求 因此 我使用自定义 FormRequest 来验证它 当我在 Post
  • 在 Laravel 5.2 中按 id 显示图像文件

    我有一个名为 files 的表 它保存与属性表相关的图像的名称 我试图使这些图像显示为以下关系 这是属性表的一部分 这是表文件及其与属性表的关系 我可以在控制器 PropertyController 的 show 方法中传递什么参数 目前我
  • 如何检查 Laravel 中是否设置了 cookie?

    我已经用我的控制器制作了一个 cookie 这似乎有效 因为如果我在开发人员工具中检查我的资源 它就在那里 但现在我想在我的视图中对其进行操作 但这似乎不起作用 这是我在我的视图中使用的代码 if Cookie get cookiename
  • 无法访问 Twig 上的 Eloquent 属性

    我试图在 Slim 中使用 Twig 访问 Eloquent 属性 但出现错误 我有一个Field和一个Type对象 关系如下 class Field extends Illuminate Database Eloquent Model p
  • Laravel 5 多租户应用程序具有单独的数据库 - 用户可以访问多个安装

    在过去的几年里 我开发了一个非常定制的 PHP MySQL 应用程序 用于许多客户 到目前为止 我一直在为每个客户端创建一个新的数据库和新的安装 这里第一个明显的问题是让多个安装保持最新的任何代码更改 第二个问题是每次安装都有大量用户 对于
  • Laravel Blade,将 php 翻译为 Blade 的递归视图

    我有一个带有 php 的递归视图 这显然是错误的 所以我必须将其转换为 Blade 以递归调用视图 我的 php 递归代码 comments blade php
  • 如何像格式化数组一样使用 monolog 记录多行条目?

    我正在尝试记录一个数组monolog in symfony logger this gt get logger logger gt info print R user true 我得到的输出未格式化为 print r 预期的格式 它将所有内
  • Laravel 5 错误处理

    我正在使用 Laravel 5 并且正在尝试制作自定义 404 页面和自定义异常处理 但我不知道将代码放在哪里 前段时间有一个 ErrorServiceProvider 不再存在 有人能给我一些指点吗 编辑 我看到他们在 App Excep
  • 通过 Laravel 框架集成现有项目?

    我已经从 github 克隆了一个项目 现在我需要集成该项目 那么如何使用 laravel 框架 我是否需要创建一个新项目然后需要替换文件夹 或任何其他替代方案 因为我是这个框架的新手 帮助我 这是一个广泛的问题 因为这取决于您的项目 而我
  • 如何在 Laravel 5.5 中编辑“页面因不活动而已过期”的视图

    在 Laravel 5 5 中 当您使用 CSRF 保护 默认情况下 并且在长时间不活动后发送发布请求时 您将收到此错误页面 屏幕截图 我对此错误表示同意 但是 我需要更改此错误的视图 文本以确保与我的应用程序风格和语言相匹配 关于如何编辑
  • Laravel Eloquent:提取以提供的字符串列表开头的所有条目

    以下请求从用户表中提取 name Albert 或 name Alberto 或 name Ana 的所有条目 users DB table users gt whereIn name Albert Alberto Ana gt get 是
  • Laravel Socialite:项目中尚未使用 Legacy People API

    我在我的 Web 应用程序上使用 Laravel 5 4 和 Socialite 3 0 进行社交登录 但现在我遇到了一个错误旧版 People API 尚未在项目 xxx 中使用 然后我对socialite包的核心文件做了一些更改 ven

随机推荐

  • Inkscape - 未完全将 png 转换为 svg

    我在 Inkscape 中打开了一个 PNG 文件并将其导出为 SVG 当我用记事本打开该文件时 我发现 PNG 文件嵌入在其中 如果发生转换 则生成的文件应该仅包含 SVG 相关标签 它不应该将图像嵌入其中 还是我做错了什么 注意 另存为
  • 寻找圆内的坐标

    我正在 Grails 下使用 Google 地图进行混搭 用户可以在其中创建地理围栏通过选择地图上的点和半径 该数据存储在我的数据库中 并且应用程序不断从 GPS 设备接收一组坐标 我想将接收到的坐标与圆圈中存储的区域进行比较 如果该点在圆
  • sed 搜索范围并打印第一组

    我有一个如下所示的文件 myname something something something myname something something myname something and it follows and no stand
  • 在 Python 中从基类对象创建对象

    我有一个基类 class Animal object def init self name None food None self name name self food food def eat self print The s eats
  • 将一个文件中的汉字写入另一个文件

    我有一个里面有汉字文本的文件 我想将这些文本复制到另一个文件中 但文件输出与中文字符混乱 请注意 在我的代码中 我已经使用 UTF8 作为我的编码 BufferedReader br new BufferedReader new FileR
  • 将 .net core 项目发布到 iis 时出现 HTTP 错误 500.19,代码为 0x80070005

    我想在我的电脑的 IIS 管理器上发布示例 net core Web 应用程序 但失败了 我正在使用 Microsoft 指南 但它对我不起作用 如果您有解决此问题的合理经验 我将不胜感激看到您的建议 我缺少 IIS gt Modules
  • Google 日历 API 移动事件

    协议如下 在谷歌开发者网站上 他们在每个 api 函数描述的底部都有一个用于尝试 api 的工具 特别是我正在使用日历 api 其中写着 使用下面的 API 资源管理器 https developers google com google
  • 使用 Swing 计时器更新标签

    我在这段代码中遇到了一些问题 我正在使用一个随机数启动一个计时器 并且我想每秒更新一个带有倒计时的 JLabel 但我还没有弄清楚如何做到这一点 因为计时器触发的唯一监听器是在它的末尾 据我所知 这是代码 int i getTimer ma
  • KB4338830 更新后冻结 Winsock 应用程序

    我们的应用程序在一段时间后突然冻结KB4338830更新 不幸的是 应用程序无法重新启动也无法关闭 我怀疑这一切都是因为我正在使用的winsock 刚刚移植 它是在vb net上编写的 该程序与其他PC的连续发送和接收数据有关 有人遇到过同
  • Visual Studio 2012 XAML 设计器 - 无法添加多个项目

    我是 VS 2012 的新手 每次使用时都会遇到这个问题XAML设计器 每次我向窗口添加一个项目 例如单选按钮 图像 标签 时 它都会删除前一个项目 结果 我的窗口中只能有一项 我知道这是荒谬的 我错过了什么 这是窗口的xaml
  • 如何垂直对齐 div 中的文本?

    我正在尝试找到将文本与 div 对齐的最有效方法 我尝试了一些方法 但似乎都不起作用 testimonialText position absolute left 15px top 15px width 150px height 309px
  • 如何使用 python Tkinter 隐藏 Windows 控制台?

    我尝试将 py 文件重命名为 pyw 但用 py2exe 编译并没有什么区别 我尝试使用 root withdraw 但它所做的只是冻结应用程序 防止弹出初始画布 并且无论如何都无法删除命令提示符窗口 有没有人有办法解决吗 我的根是 根 T
  • LINQ to Entities 不支持“日期”。仅支持初始值设定项、实体成员和实体导航属性

    我正在尝试执行以下代码并收到错误 public List
  • 有没有办法更改FixedLenNullInSource 和TrimTrailingBlanks 的值?

    有没有办法改变值FixedLenNullInSource and TrimTrailingBlanks I use sp help比较不同服务器的输出以查看表是否相同 FixedLenNullInSource and TrimTrailin
  • 在 imageview 中显示来自 Intent 的 jpg 图像

    如何显示从 android intent action SEND in an imageview 用户从应用程序列表中选择我的应用程序来共享图像 图像是sent via intent我的活动打开了 但如何在图像视图中使用此图像 using
  • istio-proxy 访问日志是什么意思?

    我试图通过查看 istio proxy 访问日志 它记录每次访问 来对我的服务进行故障排除 但是 我找不到任何解释日志中每个条目含义的文档 例如 2018 12 20T11 09 42 302Z GET HTTP 1 1 200 0 614
  • C# 嵌套类序列化

    我正在尝试序列化订单的虚拟集合 其中每个订单都包含一个产品 该集合序列化良好 但订单内的示例产品属性被遗漏 订单领取 XmlRoot Orders public class OrderCollection ICollection
  • 上传文件抛出无方法签名异常(在 getFile() 方法中)

    我正在尝试上传文件并将其存储在文件中 这是 GSP 中的代码
  • 当轴标签分成多条线时会偏离中心

    我在用graph twoway scatter并添加我自己的ylabels 我经常有很长的标签并将它们分成多行 然而当我想要破解的时候却遇到了问题some标签超过两行 但不超过两行 当我这样做时 单行标签相对于它们的中心是偏离的tick标记
  • Laravel 如何使用 Eloquent 获取对象的行号?

    我想根据用户的创建日期了解用户的位置 我该如何使用 Eloquent 来做到这一点 我希望能够做这样的事情 User getRowNumber user obj 我想你想要 MySQL 解决方案 所以你可以这样做 DB statement