标签:Power Query,Filter函数 问题:需要整理一个有数千条数据的列表,Excel可以很方便地搜索并显示需要的条目,然而,想把经过提炼的结果列表移到一个新的电子表格中,不知道有什么好方法?...图1 示例数据位于名为“表1”的表中,我们想获取“产地”列为“宜昌”的数据。...方法1:使用Power Query 在新工作簿中,单击功能区“数据”选项卡中的“获取数据——来自文件——从工作簿”命令,找到“表1”所在的工作簿,单击“导入”,在弹出的导航器中选择工作簿文件中的“表1”...图3 方法2:使用FILTER函数 新建一个工作表,在合适的位置输入公式: =FILTER(表1,表1[产地]="宜昌") 结果如下图4所示。...图5 FILTER函数简介 FILTER函数是一个动态数组函数,其语法为: =FILTER(array, include, [if_empty]) 其中,参数array,想要筛选的数据,单元格区域或数组
简介 Laravel 内置的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据表都对应一个与该表进行交互的模型(Model),通过模型类,你可以对数据表进行查询...Eloquent 我们的 Flight 模型使用哪张表,默认规则是小写的模型类名复数格式作为与其对应的表名(除非在模型类中明确指定了其它名称)。...所以,在本例中,Eloquent 认为 Flight 模型存储记录在 flights 表中。你也可以在模型中定义 table 属性来指定自定义的表名: <?...* * @var string */ protected $table = 'my_flights'; } 主键 Eloquent 默认每张表的主键名为 id,你可以在模型类中定义一个...举个例子,在 Eloquent 模型中定义一个 $dispatchesEvents 属性来映射模型生命周期中多个时间点与对应事件类: <?
* * @var string */ protected $table = 'my_flights'; } Eloquent 假设每个表都有一个名为id的主键,可以通过...$primaryKey成员变量覆盖该字段名称,另外,Eloquent假设主键字段是自增的整数,如果你想用非自增的主键或者非数字的主键的话,必须指定模型中的public属性$incrementing为false...默认情况下,Eloquent期望表中存在created_at和updated_at两个字段,字段类型为timestamp,如果不希望这两个字段的话,设置$timestamps为false <?...ORM中,get和all方法查询出多个结果集,它们的返回值是一个Illuminate\Database\Eloquent\Collection对象,该对象提供了多种对结果集操作的方法 public function...要启用软删除,可以在模型中引用Illuminate\Database\Eloquent\SoftDeletes这个Trait,并且在dates属性中增加deleted_at字段。 <?
多对多关联需要有一个中间表的支持,Eloquent提供了一些方法和这张表进行交互,如Stus关联了Mclass对象,在获取这些关联对象后,可以通过模型的pivot属性访问中间表数据 public function...需要注意的是,我们取得的每个模型对象,都会被自动赋予 pivot 属性,它代表中间表的一个模型对象,能像其它的 Eloquent 模型一样使用。...提供了便捷的方法将新的模型增加至关联中,如你需要为一个Muser模型插入一个新的Phone,这时你无须为Phone手动设置musers属性,直接在关联上使用save方法插入Phone即可 如: 为用户id...sid=1,cid=3的记录 和我们猜想的一样 插入数据 使用save插入单个数据(添加时需设置fillable定义运行添加的字段,否则程序可能会抛出异常) 该代码会先在课程表中插入数据,并且更新中间表的记录...Post时间更新,要实现这一概念只需在子模型加一个包含关联名称(对应关联方法的名称)的touches属性即可,支持添加多个关联关系 如: <?
,简单来说,它会构建类与数据表之间的映射关系,从而建立起一个可在编程语言里使用的「虚拟对象数据库」。...一个 Eloquent 模型类映射一张数据表,通过模型类提供的方法,你可以获取其映射的数据表的所有记录,也可以获取单条记录,还可以创建、更新和删除对应数据表记录,而这一切都不需要你编写任何 SQL 语句...当然,如果你不想遵循这个系统约定的规则,也可以通过手动设置模型类属性的方式进行自定义,例如: protected $table = 'articles'; 主键 Eloquent 默认假设每张数据表都有一个整型的自增主键...属性为模型类指定使用哪个连接: protected $connection = 'connection_name'; 查询数据 日常开发中,大部分操作都是数据库中查询数据,Eloquent 模型了为我们提供了很多方法帮助我们从数据库中获取数据...如果你想要在单条记录返回结果为空时返回 404 响应(在控制器方法中可能需要用到类似操作),可以通过 firstOrFail 或者 findOrFail 方法在找不到对应记录时抛出 404 异常,从而简化代码编写
举个例子,一个 User 模型和一个 Passport 模型会成为一对一的关联。一个用户只能拥有一张通行证,同样,一张通行证也只属于一个用户。 让我们看看如何在代码中定义这种关联。 <?...用户可以拥有多个账单,但账单仅属于一个用户。 在代码中是这样写的: <?...让我们使用前面的示例,但我们改变一件事:产品现在可以有多个历史条目而不是一个。 数据库表保持不变。 <?...如果您有账单,则可以获得该账单的用户。 <?...此外,多对多关联有一个pivot 属性。 此属性表示中间表,可以像任何其他模型一样使用。
在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系, 那么如何在ORM查询时只返回数据表中指定字段的数据呢...由于ORM依赖了QueryBuilder来实现查询, 在QueryBuilder的源码里通过查看get,first方法的实现可以到,他们都可以接收一个数组参数来指定要查询的字段: find方法的实现是在...\Illuminate\Database\Eloquent\Builder类里,如下: /** * Find a model by its primary key....\Model|\Illuminate\Database\Eloquent\Collection|null */ public function find($id, $columns = ['*']...以上这篇Laravel Eloquent ORM 实现查询表中指定的字段就是小编分享给大家的全部内容了,希望能给大家一个参考。
到目前为止,我们介绍的所有 Eloquent 模型操作都是针对单表的,接下来我们将花三篇左右的篇幅来给大家介绍如何在 Eloquent 模型类中建立模型之间的各种关联关系,以及如何实现关联查询和更新。...比如在大型系统中,我们的用户表通常用于最基本信息的存储,如邮箱、用户名、密码等,然后像用户爱好、标签、个性签名、所在地等信息都存到另一张扩展表中,需要的时候才会去扩展表取数据,从而提高查询性能。...可以,Eloquent 为我们提供了 with 方法,我们将需要查询的关联关系动态属性(关联方法名)传入该方法,并将其链接到 Eloquent 模型原有的查询中,就可以一次完成关联查询,加上模型自身查询...最后一个参数 $relation 表示关联关系名称,用于设置查询结果中的关联属性,默认是关联方法名。...Model 类的子类,只不过为中间表操作定义了很多方法和属性,比如我们创建一个自定义的中间表模型类 PostTag: namespace App; use Illuminate\Database\Eloquent
任何附加的 HTML 属性都指定于一个可以被管理的自动包含$attribute 变量的组件,它是一个属性包的实例。...模型时,可能希望对第二个 Eloquent 模型进行约束,使其必须是第一个 Eloquent 模型的子类。...有时候需要在查询执行过程中对特定属性进行类型转换,例如需要从数据库表中获取数据的时候。...在Laravel7中,可以在任务类上定义 maxExceptions 属性: release(10); }); } } 在此示例中,如果应用程序无法获得 Redis 锁,则该任务将释放十秒钟,并将继续重试 25 次。
上篇文章我们主要讲了Eloquent Model关于基础的CRUD方法的实现,Eloquent Model中除了基础的CRUD外还有一个很重要的部分叫模型关联,它通过面向对象的方式优雅地把数据表之间的关联关系抽象到了...Eloquent Model中让应用依然能用Fluent Api的方式访问和设置主体数据的关联数据。...、关联的模型、父模型在中间表中的外键名、关联模型在中间表中的外键名、父模型的主键、关联模型的主键、关联关系名称。...还是以官方文档的例子说起,一个 Country 模型可以通过中间的 User 模型获得多个 Post 模型。在这个例子中,您可以轻易地收集给定国家的所有博客文章。...id $this->firstKey = $firstKey;//用户表中的外键country_id $this->secondKey = $secondKey;//文章表中的外键
更新父表的timestamps 如果你想在更新关联表的同时,更新父表的timestamps,你只需要在关联表的model中添加touches属性。...php namespace App; use Illuminate\Database\Eloquent\Model; class Comment extends Model { /** *...关联时使用withDefault() 在调用关联时,如果另一个模型不存在,系统会抛出一个致命错误,例如 $comment- post- title,那么我们就需要使用withDefault() ......通过关联查询记录 在hasMany关联关系中,你可以查询出关联记录必须大于5的记录 $posts = Post::has('comment', ' ', 5)- get(); 8....Eloquent时间方法 $posts = Post::whereDate('created_at', '2018-01-31')- get(); $posts = Post::whereMonth
更新父表的timestamps 如果你想在更新关联表的同时,更新父表的timestamps,你只需要在关联表的model中添加touches属性。 比如我们有Post和Comment两个关联模型 <?...php namespace App; use Illuminate\Database\Eloquent\Model; class Comment extends Model { /**...关联时使用withDefault() 在调用关联时,如果另一个模型不存在,系统会抛出一个致命错误,例如 $comment->post->title,那么我们就需要使用withDefault() ......通过关联查询记录 在hasMany关联关系中,你可以查询出关联记录必须大于5的记录 $posts = Post::has('comment', '>', 5)->get(); 8....Eloquent时间方法 get
分布式 ID 生成器 一个唯一 ID 在一个分布式系统中是非常重要的一个业务属性,其中包括一些如订单 ID,消息 ID ,会话 ID,他们都有一些共有的特性: 全局唯一。 趋势递增。...通常有以下几种方案: 基于数据库 可以利用 MySQL 中的自增属性 auto_increment 来生成全局唯一 ID,也能保证趋势递增。...但有一个致命的缺点:当并发量足够高的时候唯一性就不能保证了。 Twitter 雪花算法 可以基于 Twitter 的 Snowflake 算法来实现。
Active Record 中文的意思是活动记录,特点是一个模型类对应数据库中的一个表。...这样看貌似没问题呀,可是为什么报错的是 m_tests 表不存在呢?这就牵涉到上面 Active Record 的概念了,在 AR 中,一个类对应的是一张表,而一张表是由多行数据组成的。...但是在我们今天的演示中,不需要这两个字段,所以也可以设置一个属性来关闭 Model 针对它们的自动处理。...等等,不对呀,我们在模型里面定义的是一个 gender() 方法,怎么在外面使用的是一个属性?别急,我们再来看看源码,看看框架中是如何把调用属性变成调用一个方法的。...其实这段代码已经很清楚明了了,如果没有 key 就返回一个空的内容,如果 key 存在于当前这个模型类的相关属性中,则调用一些处理方法后返回。
这篇文章我们来学习Laravel Database地另外一个重要的部分: Eloquent Model。...Eloquent Model把数据表的属性、关联关系等抽象到了每个Model类中,所以Model类是对数据表的抽象,而Model对象则是对表中单条记录的抽象。...,在我们的例子中并没有用到属性修改器。...Eloquent Model中同样都能使用。...除了对数据表、基本的CRUD的抽象外,模型另外的一个重要的特点是模型关联,它帮助我们优雅的解决了数据表间的关联关系。我们在之后的文章再来详细看模型关联部分的实现。
,从这个model出发,我们可能想要知道Book是在哪个表中的,这个时候,我们可以设置$table属性,同时,我们想要设置主键及其类型,我们就设置$primaryKey,$keyType,同时,我们可能还想要指定数据库连接...key和Model的attribute对应,Eloquent的方法是直接将属性存储为一个$attributes数组,然后由用户自己根据字段名进行获取,但是,其实这也会有个问题,就是一旦字段名更改了,我们必须要去更改所有直接使用字段名的地方...另一个是安全问题,我们怎么知道哪些字段是Model的属性,这是通过可以被赋值属性的“白名单”$fillable和可以被赋值属性的$guarded“黑名单”完成的,在白名单里面的就是可以设置的属性,黑名单里面的是不能的...组合查询 组合查询也是非常酷的一个功能,我们在开发中时常会写出各种各样的名字查询,如getLongBook,getCheapBook,getLongAndCheapBook等等,每次这种查询我们都必须要去写个方法...这个时候Eloquent提供了一个很酷的功能。
Eloquent Eloquent是laravel中的orm,采取的是active record的设计模式,里面的对象不仅包括领域逻辑,还包括了数据库操作,但是大家平时使用的时候可能没有探究eloquent...初始化 Eloquent首先要对数据库连接做抽象,于是有了Connection类,内部主要是对PDO的一个封装,但是如果只有Connection的话,一个问题是,我们需要直面sql,于是就有了Builder...Eloquent/Model类,有兴趣的同学可以git co 46966ec查看,刚提交上来的时候,Model类中大概如下: 可以看到属性通过定义table,connection,将具体的数据库操作是委托给了...,一个角色也会有不同的人,这个时候就需要一张中间表role_user,代码声明上如下: class User extends Model { /** * The roles that...到这,我们就分析完了eloquent在f6e2170版本上具有的功能了,到目前为止,eloquent的类图如下: 总结 目前,我们分析到的版本是f6e2170,已经具备了一个orm该需要的功能了,Connection
快速入门 更换表名 protected $table = 'my_flights'; 更换主键名称 protected $primaryKey = 'id'; 注意: Eloquent 默认主键字段是自增的整型数据...]); // 从中间表中移除相应的记录: 指定用户移除某个角色 $user->roles()->detach($roleId); // 从中间表中移除相应的记录: 指定用户移除所有角色 $user->...访问器和修改器 允许你在获取模型属性或设置其值时格式化 Eloquent 属性....例如, 你可能想要使用 Laravel 加密器对存储在数据库中的数据进行加密, 并且在 Eloquent 模型中访问时自动进行解密....你可以自定义哪些字段被自动调整修改, 甚至可以通过重写模型中的 $dates 属性完全禁止调整: class User extends Model { /** * 应该被调整为日期的属性
模型类负责与数据库进行交互,这里的模型指的是数据表的模型,一个模型类对应一张数据表,数据表的字段会映射为模型类的属性,我们可以通过模型类提供的方法实现对应数据表记录的增删改查,这样一来,我们就将原来面向过程的数据库操作转化为面向对象风格的编程...两者的主要区别是: 在 Active Record 模式中,模型类与数据表一一对应,一个模型实例对应一行数据表记录,操作模型实例等同于操作表记录; 而在 Data Mapper 模式中,业务领域(Domain...它们继承了 Eloquent ORM 的模型类基类 Model,这样就可以使用 Eloquent 模型类支持的属性和方法。...这里,我们通过设置 $timestamps 属性为 false 表示禁用 Eloquent 模型类自动维护时间字段机制。...然后在 Post 类中通过 album() 方法定义某个 Post 模型实例归属于 Album 模型实例(通过 album_id 字段),而在 Album 类中通过 posts() 方法定义一个 Album
说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查询次数。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。...备注:现在有4张表:商家表merchants、商家电话表phones、商家拥有的店铺shops表和店铺里的商品表products。...,每个店铺块包含店铺信息如标题、包含店铺商家信息如姓名和电话、包含拥有的商品信息如介绍和价格。...statement就发现这是先扫描shops表,再根据shops中每一个merchant_id去查找merchants表,查找products表也是这样,又有很多次query,这是N+1查找问题。...预加载查询 (1)嵌套预加载 Eloquent在通过属性访问关联数据时是延迟加载的,就是只有该关联数据只有在通过属性访问它时才会被加载。在查找上层模型时可以通过预加载关联数据,避免N+1问题。
领取专属 10元无门槛券
手把手带您无忧上云