51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1857|回复: 2
打印 上一主题 下一主题

Laravel数据库操作之-Eloquent ORM

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-6-21 16:29:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据库操作之-Eloquent ORM

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

Eloquent ORM简介
Laravel所自带的Eloquent ORM是一个优美、简介的ActiveRecord实现,用来实现数据库操作
每个数据表都有一个与之相对应的“模型(model)”用于和数据表交互
模型的建立
新建模型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';
}
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);



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    慵懒
    13 小时前
  • 签到天数: 1521 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2018-6-26 11:14:17 | 只看该作者
    感谢分享·~
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 23:35 , Processed in 0.070248 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表