Laravel Eloquent ORM 時如何查詢表中指定的字段

      網友投稿 1133 2025-04-02

      導讀:在使用Laravel ORM的Model方法find, get, first方法獲取數據對象時返回的數據對象的attributes屬性數組里會包含數據表中所有的字段對應...原文地址:http://www.bcty365.com/content-153-5939-1.html


      在使用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);

      Laravel Eloquent ORM 時如何查詢表中指定的字段

      }

      $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']);

      在不同的場景下三者中選符合需要的使用即可。

      轉載: http://www.bcty365.com/content-153-5939-1.htm

      Laravel

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何在Excel中輕松地在沒有關系的情況下對列表進行排名?
      下一篇:什么是低代碼搭建平臺(低代碼平臺是什么意思)
      相關文章
      亚洲电影唐人社一区二区| 国产l精品国产亚洲区在线观看| 亚洲精品无码av人在线观看| 亚洲国产综合精品中文字幕 | 亚洲国产精品视频| 国产精品亚洲va在线观看| 国产精品久久久久久亚洲影视| 亚洲另类无码专区丝袜| 亚洲AV无码专区亚洲AV桃| 亚洲AV无码专区亚洲AV桃| 国产精品久久久久久亚洲小说| 激情小说亚洲色图| 亚洲国产精品人人做人人爽 | 亚洲乱码中文字幕手机在线| 亚洲成av人片在线观看天堂无码| 免费在线观看亚洲| 亚洲一级片免费看| 亚洲无人区一区二区三区| 国产亚洲精品国产| 亚洲国产高清在线| 亚洲欧洲春色校园另类小说| 亚洲午夜电影在线观看| 亚洲人成77777在线播放网站不卡| 亚洲欧美日韩久久精品| 高清在线亚洲精品国产二区| 亚洲日韩涩涩成人午夜私人影院| 曰韩亚洲av人人夜夜澡人人爽| 亚洲成av人片在线观看无码不卡| 亚洲精品无码高潮喷水在线| 亚洲成人中文字幕| 亚洲一卡二卡三卡| 亚洲精品亚洲人成在线| 免费在线观看亚洲| 亚洲日韩精品无码一区二区三区| 久久青青成人亚洲精品| 亚洲成aⅴ人在线观看| 亚洲日韩精品A∨片无码加勒比| 国产偷国产偷亚洲高清在线| 亚洲人成网亚洲欧洲无码久久| 亚洲日本在线观看| 亚洲性线免费观看视频成熟|