laravel学习笔记(4)— 数据库操作之 - Eloquent ORM

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

 6-5 使ent ORM删除数 6-4 使用Eloquent OM修改数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值