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

    }