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);
}