• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel Eloquent ORM 实现查询表中指定的字段

    在使用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. 
     *www.bcty365.com 
     * @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 实现查询表中指定的字段就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • Laravel5.7 Eloquent ORM快速入门详解
    • Laravel 5框架学习之Eloquent (laravel 的ORM)
    • Laravel Eloquent ORM 多条件查询的例子
    • laravel 解决Eloquent ORM的save方法无法插入数据的问题
    • Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法详解
    • laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
    • Laravel框架Eloquent ORM删除数据操作示例
    • laravel 数据迁移与 Eloquent ORM的实现方法
    • Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
    • Laravel框架Eloquent ORM修改数据操作示例
    • laravel5.6 框架操作数据 Eloquent ORM用法示例
    上一篇:浅谈laravel5.5 belongsToMany自身的正确用法
    下一篇:解决laravel查询构造器中的别名问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Laravel Eloquent ORM 实现查询表中指定的字段 Laravel,Eloquent,ORM,实现,查询表,