Laravel学习过程之基础知识学习和使用(三)
来源:互联网 发布:emily the strange淘宝 编辑:程序博客网 时间:2024/05/16 09:04
Laravel学习过程之基础知识学习和使用(三)
(四)、数据库操作之-Eloquent ORM
1. Eloquent ORM简介、模型的建立及查询数据
l Eloquent ORM简介
Ø Laravel所自带的Eloquent ORM是一个优美、简洁的ActiveRecord实现,用来实现数据库操作;
Ø 每个数据表都有一个与之对应的“模型(Model)”用于和数据表交互。
l 模型的建立
Ø 在目录APP下建立Student模型(student表的模型)文件Student.php:
<?phpnamespaceApp;useIlluminate\Database\Eloquent\Model; classStudent extends Model{// 指定表名 protected $table = 'student';// 指定主键 protected $primaryKey = 'id';}
Ø 在目录App/Http/Controllers/的StudentController.php文件中创建函数queryE方法用于操作EloquentORM构造器相关内容
publicfunction queryE(){ }
注意:在queryE方法中使用Student(student表)模型的时候,要记得引用类路径:
use App\Student;
在目录App/Http下的routes.php增加一条路由:
Route::any('queryE', ['uses' => 'StudentController@queryE']);
l Eloquent ORM模型中的查询
Ø all()、find()、findOrFail()
all()查询:查询数据表的所有数据;
在StudentController.php控制器文件的queryE方法中写如下代码,用于all()查询:
$students = Student::all();echo "<pre>";var_dump($students);
结果:find()查询:查询数据表的某(几)条数据;
在StudentController.php控制器文件的queryE方法中写如下代码,用于find()查询:
$student = Student::find('1');echo "<pre>";var_dump($students);
结果:
findOrFail()查询:根据主键查找,若未找到则抛出异常;
在StudentController.php控制器文件的queryE方法中写如下代码,用于find()查询:
$student = Student::findOrFail('100');echo "<pre>";var_dump($students);
结果:
Ø 查询构造器在ORM中的使用
在StudentController.php控制器文件的queryE方法中写如下代码,用于find()查询:
$students= Student::get();echo"<pre>";var_dump($students);
结果:
有条件且排序的查询第一条:
$student= Student::where('id', '>', '1')->orderBy('age', 'desc')->first();echo"<pre>";var_dump($student);
结果:
chunk()查询:
echo "<pre>";Student::chunk(2, function ($students){var_dump($students);});
结果:
聚合函数的使用:
queryE方法中添加如下代码:
$num= Student::count();$max = Student::max('age');$min = Student::min('age');$avg = Student::avg('age');echo "总记录数:".$num.";最大值:".$max.";最小值:".$min.";平均值:".$avg."<br>";
结果:2. Eloquent ORM中新增、自定义时间戳及批量赋值的使用
l 通过模型新增数据(涉及到自定义时间戳)
由于涉及到自定义时间戳,所以在Student.php的模型(student表)文件中添加如下代码控制时间戳:
protected$timestamps = true; public function getDateFormat() { return time();}
在StudentController.php文件的queryE方法中添加如下代码,以新增数据到数据表:
$student= New Student();$student -> name = 'sun';$student -> age = '17';$bool = $student -> save();echo "<pre>";var_dump($bool);
结果:student数据表新增数据成功:
由于以上设置新增的数据时间是时间戳,但是取出的却是已经格式化好的时间,若依然想用时间戳显示查找结果,需要在Student.php模型(student表)文件中增加如下方法:
protectedfunction asDateTime($value) { return $value;}
注意:
有时候可能会发现格式化后的日期时间与当前时间不符,那是因为时区没有设置正确,设置方式如下:
在目录config下的app.php文件中找到
'timezone' => 'UTC'自改为:'timezone' => 'PRC'即可。
l 使用模型的Create方法新增数据(涉及到批量赋值)
要使用create方法新增数据,涉及到批量赋值,需要在Student.php模型(student表)文件中添加如下代码:
protected $fillable = ['name', 'age'];
在StudentController.php文件的queryE方法中添加如下代码,使用create方法新增数据:
$student= Student::create(['name' => 'sunlifang', 'age' => '20']);echo"<pre>";var_dump($student);
结果:
数据表新增数据:
同时,也可以执行不允许批量赋值的字段:
在Student.php模型(student表)文件中添加如下代码:
protected $guarded = [];
l 另外两种新增数据的方法
第一种:firstOrCreate(),执行属性(条件)查询,如有记录则显示,如没有记录则新增该字段作为一条记录。
queryE方法中添加如下内容:
$student= Student::firstOrCreate(['name' => 'sunlifang']);echo"<pre>";var_dump($student);
有记录,则显示,结果:
没记录则新增记录,结果:
数据表新增了一条’name’为’张三’的记录:
第二种:firstOrNew(),执行属性(条件)查询,如有记录则显示,如没有记录则实例化该字段,如需保存到数据表,则调用save()方法新增一条记录。
queryE方法中添加如下内容:
$student= Student::firstOrNew(['name' => '李四']);$bool =$student -> save();echo"<pre>";var_dump($bool);
有记录,则显示:
没记录,则调用save()方法保存到数据表:
数据表新增一条字段’name’值为’李四’的记录:
3. 使用Eloquent ORM修改数据
l 通过模型更新
在queryE方法中添加如下代码:
$student= Student::find(7);$student-> name = "Kitty";$bool =$student -> save();echo"<pre>";var_dump($bool);
结果:
数据表中id=7的记录名字更新为Kitty:
l 结合查询语句批量更新
在queryE方法中添加如下代码:
$num = Student::where('id','>', '6')->update(['age'=>'25']);echo $num;
结果:
数据表id>6的age都更新为25:
4. 使用Eloquent ORM删除数据
l 通过模型删除
在queryE方法中添加如下内容:
$student= Student::find(9);$bool = $student->delete();echo "<pre>";var_dump($bool);
结果:
数据表中id=9的记录被删除:
l 通过主键值删除
在queryE方法中添加如下内容:
$num =Student::destroy(8);echo"<pre>";var_dump($num);
结果:数据表中id=8的记录被删除:
同时,该方法也可以删除多条记录:
$num =Student::destroy(6,7);
$num =Student::destroy([6,7]);
l 根据指定条件删除
在queryE方法中添加如下内容:
$num =Student::where('id', '>', '5')->delete();
echo"<pre>";
var_dump($num);
结果:
数据表中id>5的记录被删除:
Blade模板引擎
1. Blade模板引擎简介及模板继承的使用
l Blade模板引擎简介
Ø Blade是Laravel提供的一个既简单又强大的模板引擎;
Ø 和其他流行的PHP模板引擎不一样,Blade并不限制你在视图(view)中使用原生的PHP代码;
Ø 所有Blade视图页面都将被编译起来成原生PHP代码并缓存起来,除非你的模板文件被修改了,否则不会重新编译。
l 模板继承
Ø section
Ø yield
Ø extends
Ø parent
l 为什么要使用模板继承
2. 基础语法及include的使用
l 模板中输出变量
l 模板中调用PHP代码
l 原样输出
l 模板中的注释
l 引用子视图include的使用
3. 流程控制
l if
l unless
l for
l foreach
4. 模板中的URL
l url()
l action()
l route()
至此,Laravel框架的基础知识,就已经总结完成,视频参考慕课网(轻松学会Laravel-基础篇http://www.imooc.com/learn/697)。
下一篇将介绍Laravel框架中表单的使用,敬请期待!
****************************只要思想不滑坡,办法总比困难多****************************
- Laravel学习过程之基础知识学习和使用(三)
- Laravel学习过程之基础知识学习和使用(二)
- Laravel学习过程之Laravel安装及配置(一)
- python学习之基础知识(三)
- laravel框架学习之数据库相关操作(三)
- php Laravel框架学习(三) 之 路由
- (三)Laravel学习笔记之验证Validator
- python学习之基础知识(三)
- Laravel学习实践(三)Laravel发送邮件
- laravel陌生知识点快速学习(三)
- php框架laravel学习 三 (基本功能)
- laravel的基础学习(三)
- 从零开始学习laravel web(三)
- ABAP基础知识学习(三)
- 学习C#基础知识(三)
- laravel 学习之第一章
- Laravel学习之
- Android的学习之路(三)项目的启动过程和安装过程详解
- 只有五行的算法——多源最短路径 Floyd-Warshall
- Python 高阶函数
- 关于字符编码,你所需要知道的
- 多线程
- 【MOOC】【枚举】4.熄灯问题——位运算
- Laravel学习过程之基础知识学习和使用(三)
- J2EE中常用的名词解释
- ReactiveCocoa入门教程:第二部分
- Jenkins集成Maven代码覆盖率插件Cobertura
- C++多重继承范例
- Hybrid Crystals(hdu6140)
- 51nod1057 N的阶乘 压位
- Python之SMTP
- terminal monitor命令