我们在使用Laravel ORM的Model方法findgetfirst方法获取数据对象时返回的数据对象的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的,firstget方法的源码在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相关推荐

  1. 使用Laravel Eloquent ORM 时如何查询表中指定的字段

    我们在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系, 那么如何在OR ...

  2. mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...

  3. mysql select 指定列_MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...

  4. Laravel 5.1 文档攻略——Laravel Eloquent ORM最强大也是最难理解的部分:数据关系...

    简介 其实大家都知道,数据表之间都是可以关联的,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: Eloquen ...

  5. Laravel Eloquent ORM 实例教程 —— 模型删除及软删除相关实现

    1.删除模型 1.1 使用delete删除模型 删除模型很简单,先获取要删除的模型实例,然后调用delete方法即可: $post = Post::find(5); if($post->dele ...

  6. 【SQL查询表中某一字段重复的数据】

    查重: select * from 表名 where 重复记录的字段名称 in ( select 重复记录字段的名称 from 表名 group by 重复记录的字段名称 having count(重 ...

  7. mysql查询一个字段最大值_查询表中某一个字段的数字最大值的记录

    这个是一个csdn上有人问的一个题目,具体的题目如下: 数据库表 表1 id name 1 DB-235-aa-fc 2 DB-275-ag-fw 3 DB-235-ajj-fj 4 DB-44444 ...

  8. sql查询表中指定月份的数据

    参考文章:https://www.cnblogs.com/jr-xiaojian/p/12327859.html 要求:查询出emp表中1981年2月份入职的员工 常用的两种方式: 1.YEAR查询年 ...

  9. SQL中查询表中包含的字段名称

    目录 一.SQL SERVER 二.MySql 三.ACCESS 四.Oracle 一.SQL SERVER 1.查看所有表名: select name from sysobjects where t ...

最新文章

  1. python动态网页开发教程_python django创建一个属于自己的动态网站
  2. Linux上部署web服务器并发布web项目
  3. MyEclipse8 GA 下载地址 注册码 优化指南
  4. linux中matlab,linux中Matlab编译m文件
  5. 欧洲最权威的12星座分析①
  6. Android之非root手机run-as命令获取debug版本apk里面的数据(shared_prefs文件,lib下面的so,数据库文件)
  7. BE的完整形式是什么?
  8. Windows 10系统下 MySql 5.7 my.ini 位置
  9. Java自动装箱和拆箱
  10. 官网改版项目问题总结
  11. 上海java工作经验与薪资_Java硕士京东工作1年,跳槽后他期望薪资26K,大家感觉他可以吗...
  12. configure: error: readline library not found/libreadline.so: undefined reference to tputs
  13. PHP for windows VC9 VC6区别
  14. 【比赛题解】第十一届蓝桥杯青少组省赛(中级组)详细题解
  15. web前端期末大作业:云南旅游网页主题网站设计——云南城市旅游5页HTML+CSS+JavaScript
  16. Google books deal battle heats up 谷歌数字图书馆建
  17. Tengine + BabaSSL ,让国密更易用
  18. NVIDIA Jetson TX2 上手指南
  19. STM32 CubeIDE(九)串口通讯
  20. ev3编程变量模块_英文视频教学翻译-机器人ev3编程学习的第二十讲:举例讲解数据变量模块编...

热门文章

  1. ES5(二)——替换this 之call()、apply()和bind()
  2. c++11 string转ing_pdfkit | 利用python实现html文件转pdf
  3. nginx 调用dll_使用DLL中的资源
  4. win10如何截屏_win10系统电脑截屏的多种操作方法
  5. 【鉴轻尘】BTC的暴跌的是因为BCH的分叉,但是你知道为什么?
  6. 吃鸡决赛圈直播却卡屏的我心好痛,立马找来开发刚了一波
  7. String,StringBuilder, StringBuffer
  8. spring boot几个初始配置文件
  9. DSS流媒体服务器搭建
  10. Win7下的使用QTP进行猴子测试的性能日志实现方法