1.Eloquent ORM简介、模型的建立及查询数据
● laravel所自带的Eloquent ORM是一个优美、简洁的ActiveRecord实现,用来实现数据库操作。
● 每个数据表都有一个与之相对应的“模型(Model)”用于和数据表交互。
// 数据库操作 - Eloquent ORM 查询数据
1.创建Model类型 方法里面声明两个受保护属性:$table(表名)和$primaryKey(主键)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model{
protected $table = 'student';
protected $primaryKey = 'id';
}
?>
2.Controller里面以 类名::方法 (静态方法)的风格进行操作数据库
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Student;
class StudentController extends Controller{
public function orm1() {
echo '<pre>';
// all 通过orm获取所有数据
// $result = Student::all();
// find 通过主键返回指定的数据
// $result = Student::find(1001);
// findOrFail 通过主键返回指定的数据 未查找到到则抛出异常
// $result = Student::findOrFail(1001);
// 获取符合条件的数据
// $student = (Student::where('age', '<', 20)->get())['tables'];
// 分段式(分页)获取数据递交给闭包函数循环处理
// Student::chunk(2, function($student) {
// var_dump($student);
// });
// 查询构造器之聚合函数
$result = Student::count();
dd($result);
}
}
?>
2.Eloquent ORM中新增数据、自定义时间戳及批量赋值的使用
// 数据库操作 - Eloquent ORM 增加数据
1.建立model类 (app\Student.php)
[ 类 属性/方法 ]
protected $table = 表名;
protected $promaryKey = 主键名;
public $timestamps = false; 是否开启时间戳自动调节
protected function getDateFormat() { return time(); } 使用时间戳存入数据库
protected function asDatetime($val) { return $val; } 将数据库里的时间戳取出时不被转换为日期
protected $fillable = ['name', 'age']; 允许批量赋值的字段 白名单设置
protected $guarded = ['aa', 'bb']; 不允许批量赋值的字段 黑名单设置
public function orm2() {
// 一、通过模型新增数据(涉及到自定义时间戳)
// $student = new Student();
// $student -> name = 'stu1';
// $student -> age = 20;
// $student -> save();
// 二、使用模型的create方法新增数据(涉及到批量赋值)
// $student = new Student();
// $result = $student -> create([
// 'name' => 'create',
// 'age' => 30
// ]);
// firstOrCreate 查找数据并返回 如果不存在则插入该条数据并返回
// $result = Student::firstOrCreate([
// 'name' => 'aj',
// 'age' => 32
// ]);
// firstOrNew 查找数据并返回 如果不存在则返回该类的对象 调用save才得以保存
$result = Student::firstOrNew(['name' => 'make']);
$result = $result->save();
dd($result);
}
3.使用Eloquent ORM修改数据
● 通过模型更新
● 结合查询语句批量更新
// 数据库操作 - Eloquent ORM 修改数据
1.建立model类 (app\Student.php)
[ 类 属性/方法 ]
protected $table = 表名;
protected $promaryKey = 主键名;
public $timestamps = false; 是否开启时间戳自动调节
protected function getDateFormat() { return time(); } 使用时间戳存入数据库
protected function asDatetime($val) { return $val; } 将数据库里的时间戳取出时不被转换为日期
protected $fillable = ['name', 'age']; 允许批量赋值的字段 白名单设置
protected $guarded = ['aa', 'bb']; 不允许批量赋值的字段 黑名单设置
StudentController.php
public function orm3() {
// 通过模型更新数据 (最后返回bool类型 单条数据是否修改成功)
// $student = Student::find(1051);
// $student->name = 'aj2';
// $result = $student->save();
// 结合查询语句批量更新 (返回int类型 受影响行数)
$result = Student::where('id', '>', 1050)
->update([
'name'=>'adj',
'age'=>32
]);
}
4.使用Eloquent ORM删除数据
● 通过模型删除
● 通过主键值删除
● 根据指定条件删除
//删除
方法一
$student=Student::find(1021);
$student->delete()//删除,返回bool
方法二
Student::destory(1020,1019)//返回值是删除记录条数
方法三
Student::where('id'>1010)->delete()