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方法中使用Studentstudent表)模型的时候,要记得引用类路径:

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框架中表单的使用,敬请期待!


                     ****************************只要思想不滑坡,办法总比困难多****************************


原创粉丝点击