首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不使用DB::raw()的Laravel 5.8雄辩查询--根据多对多关系的最新值获取行

在Laravel 5.8中,如果我们想根据多对多关系的最新值获取行,可以使用Eloquent查询构建器来实现,而不需要使用DB::raw()函数。

首先,我们需要确保在模型之间设置了正确的多对多关系。假设我们有两个模型:User(用户)和Role(角色),它们之间存在多对多关系。在User模型中,我们可以定义roles()方法来定义这个关系:

代码语言:txt
复制
public function roles()
{
    return $this->belongsToMany(Role::class)->withTimestamps();
}

接下来,我们可以使用Eloquent查询构建器来查询具有最新多对多关系值的行。假设我们想获取具有最新角色的所有用户,可以按照以下步骤进行操作:

代码语言:txt
复制
$latestRoleUsers = User::whereHas('roles', function ($query) {
    $query->latest();
})->get();

在上面的代码中,我们使用了whereHas()方法来检查用户是否具有角色,并使用latest()方法来按照最新的多对多关系值进行排序。最后,我们使用get()方法来获取结果集。

这样,我们就可以根据多对多关系的最新值获取行,而不需要使用DB::raw()函数。

推荐的腾讯云相关产品:云服务器(CVM)、云数据库MySQL版、云原生容器服务(TKE)。

以上是对于不使用DB::raw()的Laravel 5.8雄辩查询--根据多对多关系的最新值获取行的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Laravel代码简洁之道和性能优化

    思考:如何提高Model层查询DB效率?如何精简代码?...经过一番调研之后发现了一个堪称神器扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了 INSERT & UPDATE (UPSERT) 和 INSERT...,优化后22代码,代码行数少了3倍+ 查询sql条数:优化前5条sql,优化后2条sql laravel-upsert 扩展特性 安装 composer require staudenmeir/laravel-upsert...Lumen 如果您使用 Lumen,则必须手动实例化查询构建器: $builder = new \Staudenmeir\LaravelUpsert\Query\Builder(app('db')->connection...当然了还是有一些注意点和坑,下面分享一下 注意问题 要根据需求添加唯一索引 根据官方文档中说明,我们model中必须添加这行代码,才能以Eloquent方式用 use \Staudenmeir\

    5.8K20

    Laravel系列4.1】连接数据库与原生查询

    Laravel 框架中 DB 和 ORM 是两个不同组件,关于 ORM 概念,我们也将在相关学习中了解到,但是现在我们先从简单普通查询学起。...原生查询 接下来,我们就学习怎么使用原生 SQL 语句进行数据库操作。...没错,前面也说过,本身 Laravel 数据库操作就是使用 PDO ,不记得小伙伴可以移步 【PHP中PDO操作学习(四)查询结构集】https://mp.weixin.qq.com/s/dv-lnEGV0JlGsjy4rl_jkw...注意,insert() 方法返回结果是一个布尔,也就是添加操作成功失败情况,如果我们想获取新增加数据 id ,需要使用 DB::getPdo()->lastInsertId(); 这条语句才可以获取到...")); }); 注意看代码,其实我们只是使用了一个 connection() 方法。

    3.2K50

    Laravel系列4.2】查询构造器

    不过相对来说,模型需要每个表都建立,而且表间关系复杂的话 Model 类也会比较复杂,而查询构造器会更简单而且更方便使用。...在 Laravel 中,默认情况下这个设置就是 PDO::FETCH_OBJ 。关于如何修改成 PDO::FETCH_ASSOC ,我们会在后面的文章中学习。...我们又发现了一个设计模式在 Laravel 框架中应用,意外不意外,惊喜惊喜! 连表查询 普通连表查询使用还是非常简单,我也就不多说了,下面的代码中也有演示。...(比如记录插入前最后一条 ID 然后再查询一次大于这个 ID 所有数据 ID ) Route::get('db/test/batch/insert', function () { $data...不过它会中断程序运行,我们还有另一个方法 dump() ,输出内容是和这个 dd() 方法完全相同,但它不会中断程序运行。 有这三大神器,相信你 查询构造器 调试就能够得心应手了吧!

    16.8K10

    Laravel系列4.3】模型Eloquent ORM使用(一)

    我们在关系型数据库中,一数据就可以看成是一个对象,整个表就可以看成是这个对象列表。这就是非常简单地针对 ORM 理解。 Java 中 Hibernate 就是早期非常经典 ORM 框架。...db_sex 表模型,这个表是上篇文章中测试时使用,就直接拿来使用了。...里面的东西是什么,则是根据我们 MTest 这个 Model 里面的 sex 字段来确定,也就是 $this->child->{$this->foreignKey}这一段。...这个参数是可选,如果填,它会默认找一个叫做 sex_id ,当然,在我们数据中是没这个字段,所以我们指定为 sex 。...当然,这只是最简单一种一关联,Laravel 框架中还可以实现非常复杂关联,包括一一,关联,这些内容还是大家自己研究怎么使用吧,毕竟我们文章主旨还是在于搞清楚它们是怎么运行

    8.9K20

    06.Django基础五之django模型层(二)多表操作

    一 创建模型 表和表之间关系     一一、一、 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束区别,一外键约束是在一约束上加上唯一约束...书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写本书,所以作者和书籍关系就是关联关系(many-to-many);一本书只应该由一个出版商出版,所以出版商和书籍是一多关联关系...,第三种方式还是可以使用多关联关系操作接口(all、add、clear等等)       当我们使用第一种方式创建多关联关系时,就无法使用orm提供set、add、remove、clear方法来管理关系了...through 在使用ManyToManyField字段时,Django将自动生成一张表来管理关联关系。...咱们表里面包含了一一、一关系,我们基于这几个表来练习,将来无论有多少张表,都逃脱不了这三个关系,操作起来都是一样

    2.7K20

    Laravel利用redis和定时任务实现活跃用户统计

    最近在SummerLaravel教程-Web开发实战进阶》学到很多东西,以前只会看文档,大概了解Laravel内容而在实际运用中确不知道该怎样做,碰到一个需求不会立马联想到“这个东西可以用...实现...不是有句话”实践是检验真理唯一标准“ 所以学习编程还是要实践写项目,不然就像我一样拿到东西不知道怎样运用 废话不多,今天分享一下利用redis和定时任务实现活跃用户统计 如果你redis和定时任务不了解建议去补一下...// 并且同时取出用户此段时间内发布话题数量 $topic_users = Topic::query()->select(DB::raw('user_id, count...// 并且同时取出用户此段时间内发布回复数量 $reply_users = Reply::query()->select(DB::raw('user_id, count...php artisan larabbs:calculate-active-user 获取最新活跃用户,所以我们利用定时任务实现 在当前下面输入 export EDITOR=vi && crontab

    92920

    Laravel框架查询构造器常见用法总结

    本文实例讲述了Laravel框架查询构造器常见用法。...分享给大家供大家参考,具体如下: 查询构造器也是我们使用laravel框架一项必备技能,上一篇文章我们讲到了如何使用原生增删改查,这一篇我们就来讲查询构造器增删改查(以下知识点若有不全面的地方,还请多多谅解...) 查询构造器简介: Laravel查询构造器提供方便流畅接口,用来建立及执行数据库查找语法 使用PDO参数绑定,以保护应用程序免于SQL注入因此传入参数不需要额外转移特殊字符 基本可以满足所有数据库操作..."; print_r($upt); echo "</pre "; } } 结果,他会输出为4,因为我一共有四数据,所以他影响到了四数据,自增了1(在这里要说明一下,没有给他赋值时候他默认为...php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述大家基于Laravel框架PHP程序设计有所帮助

    1.1K31

    自动化平台开发小结(四)

    今天备份恢复和元数据功能点进行了改进,突然发现需要做事情远比想象。...而且尤其让我有些不得力是ORMAPI,对于增删改查来说是足够了,但是我要实现一些相对复杂统计需求时候,这种方式就很受限了,使用raw方式吧,有些SQL可能会写比较长,而且查询结果很可能不需要主键...Django流行可以参考这篇:为什么 Django 能持续统治 Python 开发世界 所以纠结贵纠结,Django这些扩展支持是有的。比如我要实现一个复杂查询需求。...,而平常使用增删改查使用Django API足矣。...如此一来,我一直比较纠结一些映射关系和定制也有了新思路。 可能我就可以直接基于ORM来做一些深度定制,而不完全依赖外键关系。 明天继续大搞一场,把剩下功能搞定。

    79450

    Laravel Eloquent 模型关联关系(下)

    ,如果返回文章结果是列表的话,需要遍历获取作者信息,假设要循环 N 次的话,加上文章模型本身获取,总共需要进行 N + 1 次查询,而 PHP 对数据库连接是短连接,每次都要重新连接数据库,所以从性能角度考虑建议使用这种方式...另外,如果访问是模型实例上 author() 方法时,返回不是用户实例了,而是一个关联关系实例,该实例注入了查询构建器,所以你可以在其基础上通过方法链方式构建查询构建器进行更加复杂查询,我们以一个一查询为例...基于关联查询过滤模型实例 有结果过滤 有的时候,可能需要根据关联查询结果来过滤查询结果,比如我们想要获取所有发布过文章用户,可以这么做: $users = User::has('posts')->get...: 结语 好了,关于关联关系我们就介绍到这里,我们分了三篇篇幅来介绍 Eloquent 模型管理关系,回顾一下,主要包含以下内容: 七种关联关系定义:一一、一、远层一、一多态关联...、一多态关联、多态关联; 以上关联关系查询,主要包含两种方式:懒惰式加载和渴求式加载; 基于关联查询构架复杂查询查询结果进行过滤; 关联模型更新、插入和删除操作。

    19.6K30

    Laravel学习记录--Model

    多态关联 - 多态一 - 多态一 - 多态 关联查询 继承:ILLuminate\Database\Eloquent\Model model与表名关系...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照我另一个博客 - - - Laravel...(articles),用户与文章是一关系,国家与用户也是一关系,那么怎么实现根据不同国家显示对应文章?...); } 显示结果 图片 多态一反向关联(根据文章或用户查询对应评论信息) 由于文章/用户跟评论关系是一,所以需要使用morphMany方法 morphMany($related,...当获取到模型记录时,你可能希望根据存在关联结果进行限制,如,获取有电话号码用户,为了实现这个功能 可以通过has()方法,将建立关系方法名传递给has即可 如 public function

    13.6K20

    python 终级篇 django --

    -->>>> 一     正向查询 一 ----->>>>    反向查询关系结果如下: class Publisher(models.Model): name = models.CharField...print(ret)                                  ManyToManyField                                 "关联管理器"是在一或者关联上下文中使用管理器...也就是什么情况下使用管理对象---->>>> 它存在于下面两种情况: 外键关系反向查询 多关联关系 简单来说就是当 点后面的对象 可能存在多个时候就可以使用以下方法。...总结: 1. select_related主要针一一和关系进行优化。...对于多字段(ManyToManyField)和一多字段,可以使用prefetch_related()来进行优化。

    2.9K20

    Laravel5.1 框架数据库查询构建器用法实例详解

    本文实例讲述了Laravel5.1 框架数据库查询构建器用法。分享给大家供大家参考,具体如下: 今儿个咱说说查询构建器。它比运行原生SQL要简单些,它操作面儿也是比较广泛。...1.2 获取数据列列表 如果你想要取到某列的话 可以使用lists方法: public function getSelect() { $result = DB::table('articles...数据库系统支持操作符,比如说 ”=“、”<“、”like“这些,如果传入第二个参数 那么默认就是”=“等于。 要比较。...共享锁可以避免被选择被修改直到事务提交: DB::table('articles')- where('id', ' ', 100)- sharedLock()- get(); 此外你还可以使用lockForUpdate...常见数据库操作技巧汇总》 希望本文所述大家基于Laravel框架PHP程序设计有所帮助。

    3.6K41

    初识Sys · 轻松掌握MySQL系统库配置表

    通过修改这个表,可以轻松系统配置进行持久化管理,也就是说,即使重启数据库,配置也不会丢失。sys_config 表提供了一个集中管理 MySQL 系统配置选项方式,允许用户根据需要进行调整和优化。...默认为 OFF,表示扫描。diagnostics.include_raw:决定是否在 diagnostics() 输出中包含原始数据。默认为 OFF,表示包含原始数据。...要恢复默认,可以将自定义变量设为 NULL:SET @sys.statement_truncate_len = NULL;配置项优先级在 MySQL 5.8 中,sys 系统库配置读取是有优先级...= 50;执行此操作后,任何基于 statement_performance_analyzer() 查询都将返回最多 50 。...使用这些配置项和触发器时,务必注意 mysql.sys 用户权限管理,以及会话变量与 sys_config 表配置优先级关系,以避免潜在配置冲突问题。

    19410
    领券