Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库进行交互。每个数据库表都有一个对应的「模型」可用来跟数据表进行交互。你可以通过模型查找数据表内的数据,以及将记录添加到数据表中。
<?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);
}