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

在laravel 5.6中使用eloquent从一个表及其数据透视表中获得经过过滤的行

在laravel 5.6中,使用eloquent从一个表及其数据透视表中获得经过过滤的行,可以按照以下步骤进行操作:

  1. 首先,确保你已经在laravel项目中安装了Eloquent ORM。Eloquent是laravel的数据库查询和映射工具。
  2. 在你的laravel项目中,创建一个模型来表示你的表和数据透视表。可以使用artisan命令来生成一个模型,例如运行以下命令来生成一个名为User的模型:php artisan make:model User
  3. 在生成的User模型中,定义与你的表和数据透视表对应的关联关系。假设你的表名为users,数据透视表名为user_roles,你可以在User模型中定义以下关联关系:public function roles() { return $this->belongsToMany(Role::class, 'user_roles'); }这里的Role是另一个模型,表示数据透视表中的角色。
  4. 现在你可以使用eloquent查询来获取经过过滤的行。假设你要获取所有拥有"admin"角色的用户,你可以使用以下代码:$users = User::whereHas('roles', function ($query) { $query->where('name', 'admin'); })->get();这里的whereHas方法用于过滤具有指定角色的用户。
  5. 如果你还需要获取关联表的其他信息,可以使用with方法进行预加载。例如,如果你还想获取每个用户的角色信息,可以使用以下代码:$users = User::with('roles')->whereHas('roles', function ($query) { $query->where('name', 'admin'); })->get();这里的with方法用于预加载关联表的数据,以避免N+1查询问题。

以上就是在laravel 5.6中使用eloquent从一个表及其数据透视表中获得经过过滤的行的步骤。在实际应用中,你可以根据具体需求进行进一步的查询和操作。

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

相关·内容

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

经过一番调研之后发现了一堪称神器扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...IGNORE 支持 先简单说明一下业务场景: 首先结构设计是:互相喜欢和添加联系人都是双向关系,即入库A B,B A这样成对双向数据 触发互相喜欢,插入2条双向数据,插入之前校验是否存在,存在不重复添加...你可以 Eloquent 模型中使用 UPSERT 和 INSERT IGNORE 查询。...->upsert(...); Eloquent ,所有版本 LumenHasUpsertQueries都需要该特性。...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据时间是int类型,不是laravel默认时间格式,并且我们插入时间和更新时间也不是laravel默认字段

5.7K20

基于独立 Laravel Eloquent 组件编写 ORM 模型类

ORM 及其实现模式 接下来我们来看看如何实现 MVC 模式 M,即模型类。...模型类负责与数据库进行交互,这里模型指的是数据模型,一模型类对应一张数据数据字段会映射为模型类属性,我们可以通过模型类提供方法实现对应数据表记录增删改查,这样一来,我们就将原来面向过程数据库操作转化为面向对象风格编程...两者主要区别是: Active Record 模式,模型类与数据一一对应,一模型实例对应一数据表记录,操作模型实例等同于操作表记录; 而在 Data Mapper 模式,业务领域(Domain...下载 Eloquent ORM 相关扩展包 Eloquent ORM 作为 Laravel 框架自带 ORM 实现,还可以 Laravel 框架之外作为独立 ORM 组件使用。...模型类全局可用(为了编写 Eloquent 模型类,如果只是使用 Laravel 提供数据库查询构建器功能,则不需要这些操作)。

1.9K10

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

我们关系型数据,一数据就可以看成是一对象,整个就可以看成是这个对象列表。这就是非常简单地针对 ORM 理解。 Java Hibernate 就是早期非常经典 ORM 框架。...这样看貌似没问题呀,可是为什么报错是 m_tests 不存在呢?这就牵涉到上面 Active Record 概念了, AR ,一类对应是一张,而一张是由多行数据组成。...对于 Laravel 中标准 Eloquent 模型类来说,每个都应该有两个字段,一是 updated_at ,另一是 created_at ,分别是两时间戳字段,用于记录数据创建时间和修改时间...标准数据库结构,我们是有主外键概念,但是,说实话, MySQL 中使用主外键情况还真的是非常少。之前似乎有印象说 MySQL 不是很推荐通过主外键来建立之间联系。...这样做原因也正是为了保持数据一致性和完整性。 当然, Laravel ,可以不在数据库层面进行严格设置,就可以框架代码实现主外键关联。

8.8K20

3分钟短文:Laravel 从软删除说到模型作用域概念

我们从软删除使用,再顺便说一说模型内作用域概念。 代码时间 常规删除操作分两步进行,一步是把数据数据查询出来,使用laravel模型方法, 则返回是一模型对象。...::destroy(1); 该方法可以可以用于批量删除传入指定ID数组条目: Contact::destroy([1, 5, 7]); 当然了,delete方法只是链式调用方法,我们通过查询构造器过滤数据集...数据内记录直接移除了,这在重要, 比如user,order,payment这些关系用户权限,资金支付等等重要数据资源上,物理删除是不被允许。...所以引入了软删除概念,就是内添加一字段,用于标记,这一条目是否算是删除状态。laravel, 这个软删除字段默认是 deleted_at。你也可以模型手动指定。...然后模型,引入软删除功能,将其进行全局生效使用

1.3K30

Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解

如果你熟悉使用API进行输出,构架前后端分离网络应用,那么你应该会发现,当我们使用Eloquent数据取出数据后,如果想以JSON格式进行输出,那么我们可以使用- toJson()这个方法,这个方法可以直接将我们...那么ShippingAddress对应数据shipping_addresses,我们可能会有如下定义: | id | country_id | province_id | city_id |...address | 字段类型我就不赘述了,其中country_id、province_id以及city_id这三外键分别对应了国家、省份以及城市id。...而Customer对应customers,会有shipping_address_id这个外键指向shipping_addressesid。...这样一来其实非常麻烦,并且不利于代码维护,因为这会让原本简洁model显得很复杂。 基于以上原因,我们需要一中间层,我们输出model成为JSON时候,可以进行一次信息过滤及加工。

4.4K30

laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

分享给大家供大家参考,具体如下: 1、连接数据laravel连接数据配置文件位于config/database.php,在其中connection字段包含laravel所支持数据配置信息...而且通过PDO绑定方式避免SQL注入攻击,使用查询构建器时不必考虑过滤用户输入。...Laravel内置Eloquent ORM提供了一种便捷方式帮助你组织数据数据,每张数据都对应一与该进行交互模型(Model),通过Model类,你可以对数据进行查询、插入、更新、删除等操作...Eloquent默认会管理数据创建时间、更新时间,对应数据created_at、updated_at字段,你需要在创建时包含这两个字段。...使用create批量添加时,需要在模板通过fillable指定可以赋值字段,也可以guard指定不允许赋值字段。

13.3K51

Laravel Eloquent 模型关联关系(下)

从性能上来说,渴求式加载更优,因为它会提前从数据库一次性查询所有关联数据,而懒惰式加载每次查询动态属性时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以开发过程如果想优化性能...注:实际开发为了提高查询性能,我们往往是 posts 冗余提供一 comments_count 字段,每新增一条评论,该字段值加 1,查询时候直接取该字段即可,从而提高查询性能。...所以不管模型实例有多少,关联结果只会查询一次,加上模型本身查询总共是两次查询,列表查询时,大大减少了对数据连接查询次数,因而有更好性能表现,推荐使用。...渴求式加载,也可以通过闭包传入额外约束条件,只不过这个约束条件是对关联模型自身过滤,不影响目标模型查询: $post = Post::with(['comments' => function...Eloquent 允许我们为这种空对象定义一默认类型,这个对象类型可以定义关联关系时候指定: public function author() { return $this->belongsTo

19.5K30

Laravel6.0.4将添加计划任务事件方法步骤

让我们来看看这个版本一些亮点新特性: 首先, TestResponse 类添加了一 assertJsonPath() 断言,对于 JSON 响应中使用针对嵌套属性点符号断言值,这个断言非常方便...($name); $builder- getGlobalMacro($name); $builder- hasGlobalMacro($name); 向 BelongsToMany 关联添加另一访问方法来获取中间列...此版本最后一新更新是允许使用 inputargument 和 inputoption 对象定义命令参数和选项: // 当前样式,仍受支持 protected function getArguments...修复了 __() 和 null 参数 (#29967) 修复了自定义数据透视模型上修改 updated_at 列问题 (#29970) 修复了 Illuminate\Redis\Limiters\...0/false 禁用加密成为可能 (#29985) validate dimensions 中允许 symfony 文件实例 (#30009) 使用自定义配置创建存储模拟数据 (#29999) 仅当语言环境有条件地存在时

1.7K21

orm 系列 之 Eloquent使用1

Eloquent ORM 本文会是一Eloquent使用教程,在此之前,我们先讲述下怎么搭建环境,完整系列请查看orm 基础环境搭建 记录下怎么用docker搭建laravel环境 新建项目composer...通过EloquentScheme Builder构建数据库 通过使用Schema Builder我们可以设计数据时候,不写一sql,通过Schema Builder,我们可以 creating...,闭包设置了字段,最后通过build真正执行数据库操作,最后调用到了blueprintbuild方法,传入connection是数据库连接抽象,负责数据库执行操作,grammar负责sql拼装...$columns和$commands,Grammar使用拼装sql时候,取得数据就是这两地方来。...和migrations功能,通过使用Schema Builder,使得我们可以不用写一句sql就可以完成数据库设计,而migrations则使得我们团队协作,更好数据库进行版本控制。

1.7K20

Laravel 模型关联基础教程详解

Laravel 定义模型关联是每个 Laravel 开发者可能已经做过不止一次事情。但是试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样关联,你应该选择哪一?...user() { return $this- belongsTo(App\User::class); } } 一对多 你可以 Laravel 定义下一关联是一对多关联。...用户可以拥有多个账单,但账单仅属于一用户。 代码是这样写: <?...你可以通过创建迁移文件 Laravel 创建此中间。 远程关联 远程一对一 has one through 关联通过单个中间关联模型实现。...让我们使用前面的示例,但我们改变一件事:产品现在可以有多个历史条目而不是一数据保持不变。 <?

5.5K31

Laravel『约定优于配置』

引用自Laravel官方文档: 『约定优于配置』(convention over configuration),也称作按约定编程,这是一种软件设计范式,旨在减少软件开发人员需做决定数量,获得简单好处...Eloquent 数据命名约定机制即属于『约定优于配置』,数据模型类 Article 按照系统约定对应于 articles 数据,如果我们因为特殊原因需要使用其他名称,只需要通过配置 $table...Laravel 项目中大量使用了『约定优于配置』这种设计范式,这也是 Laravel 另一可爱之处。...举例如下: Eloquent Article 模型默认情况下会使用「下划线命名法」与「复数形式名称」来作为数据名称生成规则。...如: Article 数据模型类对应 articles ; User 数据模型类对应 users ; BlogPost 数据模型类对应 blog_posts

1.1K10

深入理解 Laravel Eloquent(三)——模型间关系(关联)

本篇文章,我将跟大家一起学习 Eloquent 中最复杂也是最难理解部分——模型间关系。...pay: id ... ... user_id User 和 Pay 具有一对多关系,换句话说就是一 User 可以有多个 Pay,这样的话,只 Pay 存在一 `user_id` 字段即可。...其他关系 Eloquent 还提供 “远层一对多关联”、“多态关联” 和 “多态多对多关联” 这另外三种用法,经过上面的学习,我们已经掌握了 Eloquent 模型间关系基本概念和使用方法,剩下几种不常用方法就留到我们用到时候再自己探索吧...重要技巧:关系预载入 你也许已经发现了,一对一关系,如果我们需要一次性查询出10 User 并带上对应 Account 的话,那么就需要给数据库打 1 + 10 条 SQL,这样性能是很差。...我们可以使用重要特性,关系预载入:http://laravel-china.org/docs/eloquent#eager-loading 直接上代码: $users = User::with('

2.6K30

laravel 模型Eloquent ORM 查询

up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大 模型 Model 介绍 Laravel Eloquent ORM 提供了一漂亮、简洁 ActiveRecord...每个数据都有一对应「模型」用来与该交互。你可以通过模型查询数据数据,以及在数据插入新记录。 开始之前,请确保 config/database.php 配置数据库连接。...laravel Model 使用先进 Eloquent ORM 但也有优缺点 优点是数据操作变简单安全 缺点也明显数据操作变缓慢笨重 Eloquent ORM 作为 laravel 亮点...使用是单数形式帕斯卡命名法 ,也就是首字母大写驼峰命名法 比如 up之前创建 test Model 命名就是 Test.php 但是呢, laravel 都能 用命令创建控制器生成数据填充了...像 get 里面这一长串方法一样,我们查询数据时候经常会有略微复杂查询把它们写成一模型方法 比如说 app/Models/Test.php 文件写一 getList 方法 <?

4.4K10

Laravel5.7 Eloquent ORM快速入门详解

简介 Laravel 内置 Eloquent ORM 提供了一美观、简单数据库打交道 ActiveRecord 实现,每张数据都对应一与该进行交互模型(Model),通过模型类,你可以对数据进行查询...Eloquent 我们 Flight 模型使用哪张,默认规则是小写模型类名复数格式作为与其对应名(除非在模型类明确指定了其它名称)。...所以,本例Eloquent 认为 Flight 模型存储记录在 flights 。你也可以模型定义 table 属性来指定自定义名: <?...时间戳 默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据,如果你不想要这些 Laravel 自动管理数据列,模型类设置 $timestamps...* * @var string */ protected $connection = 'connection-name'; } 获取模型 创建完模型及其关联数据后,就可以从数据获取数据

15K41

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理 本博文主要介绍 Laravel 框架 Eloquent 对一对多关系处理以及 Laravel Administrator...您数据库可能是彼此相关。比方,一篇博客文章可能有很多评论,或者一订单与下订单用户相关。Eloquent 使得管理和处理这些关系变得简单。...Laravel 提供了四种类型关系: –一对一 –一对多 –多对多 – 多态关系 一对多 一一对多关系样例是一篇博客文章有很多评论或者一课程有的多次分数信息等。...> 通过以上步骤处理。之间一对多关系已确立, 以下将介绍Laravel Administrato 后台中实现 下拉列表查询、绑定等应用 <?...演示样例多次使用到 “学生姓名”、“课程名”,尽管他们存储不同,但因为我们之前 Model已建立了它们之间 一对多关系,因此我们能够自由搭配组合 效果图例如以下: 10Laravel4

2.1K40

使用Entrust扩展包在laravel 实现RBAC功能

config/auth.php设置合适值,Entrust会使用这些配置值来选择相应用户和模型类: 'providers' = [ 'users' = [ 'driver' = 'eloquent...:User模型添加roles() 、hasRole(name) 、can(permission) 以及ability(roles,permissions, 软删除 使用Entrust提供迁移命令生成关联关系默认使用了...如果你由于某种原因不能在数据库中使用级联删除,那么可以EntrustRole 、EntrustPermission 类以及HasRole trait提供事件监听器手动删除关联记录。...不过,由于Laravel事件监听器局限性,所以暂时无法区分是调用delete() 还是forceDelete() ,基于这个原因,在你删除一模型之前,必须手动删除所有关联数据(除非你数据使用了级联删除...$role- perms()- sync([]); // 删除关联数据 $role- forceDelete(); // 不管透视是否有级联删除都会生效 总结 到此这篇关于使用Entrust扩展包在

6.1K10
领券