美文网首页PHP学习
Laravel数据库操作之-Eloquent ORM

Laravel数据库操作之-Eloquent ORM

作者: 威研威语 | 来源:发表于2017-02-08 17:34 被阅读0次

    数据库操作之-Eloquent ORM

    1. Eloquent ORM简介、模型的建立及查询数据
    2. Eloquent ORM中新增数据、自定义时间戳及批量赋值的使用
    3. 使用Eloquent ORM修改数据
    4. 使用Eloquent ORM删除数据

    1. Eloquent ORM简介、模型的建立及查询数据

    1. Eloquent ORM简介
    • Laravel所自带的Eloquent ORM是一个优美、简介的ActiveRecord实现,用来实现数据库操作
    • 每个数据表都有一个与之相对应的“模型(model)”用于和数据表交互
    1. 模型的建立
    • 新建模型Student.php,代码如下:

    模型文件所在位置laravel\app\Student.php

    <?php
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Student extends Model
    {
        // 默认表名students
        // 手动指定表名
        protected $table = 'student';
    
        // 默认是id字段作为主键,指定id为主键
        protected $primaryKey = 'id';
    }
    
    1. Eloquent ORM中的查询
    • all()、find()、findOrFail()
    • 查询构造器在ORM中的使用
    // 引入model模型
    use App\Student;
    
    
    // all() 返回是一个集合
    // $students = Student::all();
    
    // find()
    // $student = Student::find(1001);
    
    // findOrFail() 根据主键查找如果没有找到就报错
    // $student = Student::findOrFail(1006);
    
    // $students = Student::get();
    // $student = Student::where('id','>','1001')
    //  ->orderBy('age','desc')
    //  ->first();
    
    // echo '<pre>';
    // Student::chunk(2,function($students){
    //  var_dump($students);
    // });
    
    
    // 聚合函数
    // $num = Student::count();
    $max = Student::where('id','>',1001)->max('age');
    var_dump($max);
    

    2. Eloquent ORM中新增数据、自定义时间戳及批量赋值的使用

    • 通过模型新增数据(涉及到自定义时间戳)
    • 使用模型的Create方法新增数据(涉及到批量赋值)

    模型文件所在位置laravel\app\Student.php

    <?php
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Student extends Model
    {
        // 默认表名students
        // 手动指定表名
        protected $table = 'student';
    
        // 默认是id字段作为主键,指定id为主键
        protected $primaryKey = 'id';
    
        // 指定允许批量赋值的字段
        protected $fillable = ['name','age'];
    
        // 指定不允许批量赋值的字段
        protected $guarded = [];
    
        // 自动维护时间戳
        public $timestamps = true;
    
        // 插入时间戳
        protected function getDateFormat()
        {
            return time();
        }
    
        protected function asDateTime($val)
        {
            return $val;
        }
    }
    
    • 使用模型的Create方法新增数据(涉及到批量赋值)
    // 使用模型新增数据
    // $student = new Student();
    // $student->name = 'sean2';
    // $student->age = 20;
    // $bool = $student->save();
    // dd($bool);
    
    // 查询时间戳
    // $student = Student::find(1010);
    // echo date('Y-m-d H:i:s',$student->created_at);
    
    // 使用模型的Create方法新增数据
    // $student = Student::create(
    //      ['name'=>'imooc','age'=>18]
    //  );
    
    // firstOrCreate() 查询数据库中字段的属性,如果没有,则新增一条
    // $student = Student::firstOrCreate(
    //      ['name'=>'imoocs']
    //  );
    
    // firstOrNew() 以属性查找数据库,没有则生成新的实例,需要保存调用save()方法
    $student = Student::firstOrNew(
            ['name'=>'imoocss']
        );
    $bool = $student->save();
    dd($bool);
    

    3. 使用Eloquent ORM修改数据

    • 通过模型更新
    • 结合查询语句批量更新
    // 通过模型更新数据
    // $student = Student::find(1013);
    // $student->name = 'kity';
    // $bool = $student->save();
    // var_dump($bool);
    
    $num = Student::where('id','>',1011)->update(
            ['age'=>41]
        );
    var_dump($num);
    

    4. 使用Eloquent ORM删除数据

    • 通过模型删除
    • 通过主键值删除
    • 根据指定条件删除
    // 通过模型删除   
    // $student = Student::find(1013);
    // $bool = $student->delete();
    // var_dump($bool);
    
    // 通过主键删除
    // $num = Student::destroy(1012);
    // $num = Student::destroy(1010,1011);
    // $num = Student::destroy([1008,1009]);
    
    $num = Student::where('id','>',1004)->delete();
    var_dump($num);
    

    相关文章

      网友评论

        本文标题:Laravel数据库操作之-Eloquent ORM

        本文链接:https://www.haomeiwen.com/subject/bvsmittx.html