使用Laravel Eloquent ORM 时如何查询表中指定的字段 1
我们在使用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.** @param mixed $id* @param array $columns* @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|null*/public function find($id, $columns = ['*']){if (is_array($id)) {return $this->findMany($id, $columns);}$this->query->where($this->model->getQualifiedKeyName(), '=', $id);return $this->first($columns);}
由于Eloquent Query Builder是依赖查询构建器\Illuminate\Database\Query\Builder
的,first
和get
方法的源码在Query Builder里如下:
/*** Execute the query and get the first result.** @param array $columns* @return mixed|static*/public function first($columns = ['*']){$results = $this->take(1)->get($columns);return count($results) > 0 ? reset($results) : null;}/*** Execute the query as a "select" statement.** @param array $columns* @return array|static[]*/public function get($columns = ['*']){if (is_null($this->columns)) {$this->columns = $columns;}return $this->processor->processSelect($this, $this->runSelect());}
所以使用Laravel的ORM方法查询返回指定的字段可通过如下三种方法来实现
$data = ModelA::find($id, ['column1', 'column2']);$data = ModelA::first(['column1', 'column2']);$data = ModelA::where(['column1', '=', 'value'])->get(['column1', 'column2']);
在不同的场景下三者中选符合需要的使用即可。
使用Laravel Eloquent ORM 时如何查询表中指定的字段 1相关推荐
- 使用Laravel Eloquent ORM 时如何查询表中指定的字段
我们在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系, 那么如何在OR ...
- mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据
本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...
- mysql select 指定列_MySQL使用select语句查询指定表中指定列(字段)的数据
本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...
- Laravel 5.1 文档攻略——Laravel Eloquent ORM最强大也是最难理解的部分:数据关系...
简介 其实大家都知道,数据表之间都是可以关联的,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: Eloquen ...
- Laravel Eloquent ORM 实例教程 —— 模型删除及软删除相关实现
1.删除模型 1.1 使用delete删除模型 删除模型很简单,先获取要删除的模型实例,然后调用delete方法即可: $post = Post::find(5); if($post->dele ...
- 【SQL查询表中某一字段重复的数据】
查重: select * from 表名 where 重复记录的字段名称 in ( select 重复记录字段的名称 from 表名 group by 重复记录的字段名称 having count(重 ...
- mysql查询一个字段最大值_查询表中某一个字段的数字最大值的记录
这个是一个csdn上有人问的一个题目,具体的题目如下: 数据库表 表1 id name 1 DB-235-aa-fc 2 DB-275-ag-fw 3 DB-235-ajj-fj 4 DB-44444 ...
- sql查询表中指定月份的数据
参考文章:https://www.cnblogs.com/jr-xiaojian/p/12327859.html 要求:查询出emp表中1981年2月份入职的员工 常用的两种方式: 1.YEAR查询年 ...
- SQL中查询表中包含的字段名称
目录 一.SQL SERVER 二.MySql 三.ACCESS 四.Oracle 一.SQL SERVER 1.查看所有表名: select name from sysobjects where t ...
最新文章
- python动态网页开发教程_python django创建一个属于自己的动态网站
- Linux上部署web服务器并发布web项目
- MyEclipse8 GA 下载地址 注册码 优化指南
- linux中matlab,linux中Matlab编译m文件
- 欧洲最权威的12星座分析①
- Android之非root手机run-as命令获取debug版本apk里面的数据(shared_prefs文件,lib下面的so,数据库文件)
- BE的完整形式是什么?
- Windows 10系统下 MySql 5.7 my.ini 位置
- Java自动装箱和拆箱
- 官网改版项目问题总结
- 上海java工作经验与薪资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
- configure: error: readline library not found/libreadline.so: undefined reference to tputs
- PHP for windows VC9 VC6区别
- 【比赛题解】第十一届蓝桥杯青少组省赛(中级组)详细题解
- web前端期末大作业:云南旅游网页主题网站设计——云南城市旅游5页HTML+CSS+JavaScript
- Google books deal battle heats up 谷歌数字图书馆建
- Tengine + BabaSSL ,让国密更易用
- NVIDIA Jetson TX2 上手指南
- STM32 CubeIDE(九)串口通讯
- ev3编程变量模块_英文视频教学翻译-机器人ev3编程学习的第二十讲:举例讲解数据变量模块编...
热门文章
- ES5(二)——替换this 之call()、apply()和bind()
- c++11 string转ing_pdfkit | 利用python实现html文件转pdf
- nginx 调用dll_使用DLL中的资源
- win10如何截屏_win10系统电脑截屏的多种操作方法
- 【鉴轻尘】BTC的暴跌的是因为BCH的分叉,但是你知道为什么?
- 吃鸡决赛圈直播却卡屏的我心好痛,立马找来开发刚了一波
- String,StringBuilder, StringBuffer
- spring boot几个初始配置文件
- DSS流媒体服务器搭建
- Win7下的使用QTP进行猴子测试的性能日志实现方法