Laravel - Eloquent 模型查詢


Laravel 的 Eloquent ORM 提供了漂亮、簡潔的 ActiveRecord 實現來和數據庫進行交互。每個數據庫表都有一個對應的「模型」可用來跟數據表進行交互。你可以通過模型查找數據表內的數據,以及將記錄添加到數據表中。

1. 模型文件

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    protected $table = 'student';
    protected $primaryKey = 'id';
}

 

2. 控制器文件

 
public function ormQuery()
    {
            # 1.1 查詢所有
            //    $ret = Student::all();
        
            # 1.2 查詢主鍵,沒找到返回null
            //    $ret = Student::find(1);

            # 1.3 根據主鍵查找,如果沒查到就拋出異常
            // $ret = Student::findOrFail(1);

        # ______________________________________________________________________

            # 2.Eloquent 的 all 方法會返回在模型數據表中的所有結果。由於每個 Eloquent 模型都可以當作一個 查詢構造器,所以你可以在查找中增加規則,然后使用 get 方法來獲取結果:
        
            # 2.1  和 all()一樣都是返回所有數據
            // $ret = Student::get();  

            # 2.2  獲取id為1的數據
            // $ret = Student::where('id',1)->get(); 

            # 2.3 獲取id>1 的數據 按照年齡進行降序排列
            // $ret = Student::where('id','>',1)->orderBy('age','desc')->get(); 

            # 2.4 獲取id>1 的數據 按照年齡進行降序排列 的 第一個
            // $ret = Student::where('id','>',1)->orderBy('age','desc')->first(); 

         # ______________________________________________________________________

       
            # 3. chunk 分塊結果 . 如果你需要處理上千筆 Eloquent 查找結果,則可以使用 chunk 命令。chunk 方法將會獲取一個  Eloquent 模型的「分塊」,並將它們送到指定的 閉包 (Closure) 中進行處理。當你在處理大量結果時,使用 chunk 方法可節省內存:
            
            /**
             * @param 1 : 第一個參數表示每次「分塊」時你希望接收的數據數量
             * @param 2 : 閉包則作為第二個參數傳遞,它將會在每次從數據取出分塊時被調用。
             */
            // Student::chunk(2,function($req){
            //   dump($req);
            // });

         # ______________________________________________________________________

            # 4.聚合函數
            
            # 4.1 查詢總數
            // $ret = Student::count();

            # 4.2 比較得出最大值而非計算
            // $ret = Student::max('age');   
            $ret = Student::where('id','>',1)->max('age');   
            
            dump($ret);
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM