LaravelEloquentORM实现查询表中指定的字段

LaravelEloquentORM实现查询表中指定的字段

2023年7月20日发(作者:)

LaravelEloquentORM实现查询表中指定的字段在使⽤Laravel ORM的Model⽅法find, get, first⽅法获取数据对象时返回的数据对象的attributes属性数组⾥会包含数据表中所有的字段对应的键值关系, 那么如何在ORM查询时只返回数据表中指定字段的数据呢?很多时候,⽂档上没有写明的⽤法需要我们去看源码来探究的,下⾯我们就来看⼀下这三个⽅法的实现。由于ORM依赖了QueryBuilder来实现查询, 在QueryBuilder的源码⾥通过查看get,first⽅法的实现可以到,他们都可以接收⼀个数组参数来指定要查询的字段:find⽅法的实现是在IlluminateDatabaseEloquentBuilder类⾥,如下:/**

* Find a model by its primary key.

*

* @param mixed $id

* @param array $columns

* @return IlluminateDatabaseEloquentModel|IlluminateDatabaseEloquentCollection|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是依赖查询构建器IlluminateDatabaseQueryBuilder的,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 实现查询表中指定的字段就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689825132a288944.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信