Laravel数据库操作之-Eloquent ORM

数据库操作之-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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容