数据库操作Eloquent ORM、Blade模板引擎以及模板继承的使用

在这里插入图片描述
在这里插入图片描述

数据库操作之-Eloquent ORM

ORM一般指对象关系映射。对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
private
是完全私有的,只有当前类中的成员能访问到.
protected 是受保护的,只有当前类的成员与继承该类的类才能访问

1、Eloquent ORM简介

Eloquent ORM是一个优美、简介的ActiveRecord实现,用来实现数据库操作
每个数据表都有一个与之相对应的“模型Model” 用于和数据表交互。

2、 模型的建立

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    //指定表名
    protected $table='student';

    //指定主键
    protected $primaryKey='id';

}

3、查询数据

all()、find()、findOrFail()
查询构造器在ORM中的使用

    public function orm1(){
        //查询表的所有记录
        $student = Student::all();

        //查询id为5的记录
        $student=Student::find(5);

        //根据主键查找,如果没有查找抛出异常,报错
        $student=Student::findOrFail(2);

        //查询所有的
        $student = Student::get();

        //where
        $student=Student::where('id','>',4)
            ->orderBy('age','desc')
            ->first();
//        dd($student);


        //每次查2条
        echo '<pre>';
//<pre>标签用于定义预先排版的文本。<pre>元素里的文本是用定宽字体显示的,而且会保留空格和换行。
        Student::chunk(2,function($student){
            var_dump($student);
        });

        //聚合函数
        $student=Student::count();
        $student=Student::sum('age');
        $student=Student::where('id','>',4)->max('age');
        $student=Student::min('age');
        $student=Student::avg('age');

        var_dump($student);

    }

4、 Eloquent ORM中新增数据

通过模型新增数据(涉及到自定义时间戳)

使用模型新增数据
        $student=new Student();
        $student->name='lcy5';
        $student->age=55;
        $bool=$student->save();  //保存数据
        var_dump($bool);
    }
        $student = Student::find(14);
        echo $student->created_at;
        echo date('Y-m-d H:i:s',$student->created_at);
    }
class Student extends Modelpublic $timestamps=true;//自动维护时间戳
//格式化时间
protected function getDateFormat()
{
    return time();
}

//不让时间戳格式化
protected function  asDateTime($val)
{
    return $val;
}
使用模型的Create方法新增数据(涉及到批量赋值)


        //使用模型的create方法新增数据,设计到批量增加
//        $student = Student::create(['name' => 'lcy', 'age' => 18]);
//        dd($student);

        //以属性查找用户,若没有则新增,并取得新的实例
//        $student=Student::firstOrCreate(
//            ['name'=>'lgy']
//        );
//
//        dd($student);


        $student=Student::firstOrNew(
            ['name'=>'qyz']
        );
        $bool=$student->save();

        var_dump($bool);
        //以属性查找用户,若没有则新增,并取得新的实例.如果要保存使用
class Student extends Model//指定允许批量赋值的字段
protected $fillable=['name','age'];

//指定不允许批量赋值的字段
protected $guarded =[];

5、使用Eloquent ORM修改数据

通过模型更新

//        //通过模型更新数据
//             $student = Student::find(10);
//             $student->name='kitty';
//             $bool = $student->save();
//             dd($bool);
             //结合where批量更新
结合查询语句批量更新
$num=Student::where('id','>',10)->update(
    ['age'=>41]
);
var_dump($num);

6、使用Eloquent ORM删除数据

通过模型删除
        //通过模型删除
//        $student=Student::find(17)
//            ->delete();
//        var_dump($student);
通过主键删除
       //通过主键删除
//        $student=Student::destroy(12);
//        $student=Student::destroy(8,9);
//        $student=Student::destroy([8,9]);//同上
        //下面自己想的可以忽略
//        $student=Student::findOrFail(15)->delete();
//        var_dump($student);
根据指定条件删除
        //根据指定条件删除
//        $student=Student::where('id','>',12)->delete();
        var_dump($student);
    }

Blade模板引擎简介及模板继承的使用

1、Blade模板引擎简介及模板继承的使用

  • 简介

他是模板引擎
不限制在视图中使用原生PHP代码
视图页面编译成原生PHP代码缓存起来了,除非你的模板文件被修改

  • 模板继承

1、@section
父模板(默认内容):
@section(‘content’)
默认的内容
@show
子模板:(layout.blade.php)
@extend(‘layouts’)
@section(‘content’)
@parent(拓展/继承父类)
新的内容
@stop
2、@yield
父模板:
@yield(‘title’,‘默认标题’)
子模板:
@section(‘title’)
//@parent就算写了也不显示
新的内容
@stop

@section和@yield的区别:
@section默认的内容和扩展的内容
@yield默认的标题或者新的标题

3、@extends
@extend(‘layouts’) //(layout.blade.php)

4、@parent //默认内容
5、@override //重写
6、@append //新增

@override和@append的区别:
@section(‘content’)
加一行内容:
@append
@section(‘content’)
再加一行内容:
@append
@section(‘content’)
可以了可以了:
@stop
@section(‘content’)
都不要了,我说的:
@override
输出结果:都不要了,我说的:

2、基础语法及include的使用

public function section1(){
    $name='sean';
    $arr=['sean','imooc'];
    return view('student.section1',[
        'name'=>$name,
        'arr'=>$arr,
    ]);
}
  • 模板中输出变量
<p>{{$name}}</p>
  • 模板中调用php代码
<p>{{time()}}</p>
<p>{{date('Y-m-d H-i-s')}}</p>
  • 原样输出
<p>@{{$name}}</p>
  • 模板的注释
{{--模板的注释--}}
  • 引入子视图include的使用
@include('student.common1',['message'=>"wozhenkeai"])

3、流程控制

public function section1(){
    $students=Student::get();

    $name='sean';
    $arr=['sean','imoocc'];

    return view('student.section1',[
        'name'=>$name,
        'arr'=>$arr,
        'students'=>$students,
        //{"id":4,"name":"lzy","age":41,"updated_at":0,"created_at":null}
    ]);
}
  1. if
@if($name='sean')
    i am sean
@elseif($name='iimooc')
    i am sean
@else
    who is i?
@endif

<br>
@if(in_array($name,$arr))
    ture
@else
    false
@endif
  1. unless
{{--if的取反--}}
@unless($name=='ic')
    i am not iimooc
@endunless
  1. for
{{--@for($i=0;$i<5;$i++)--}}
    {{--<p>{{$i}}</p>--}}
{{--@endfor--}}
  1. foreach
{{--@foreach($students as $student)--}}
    {{--<p>{{ $student->name}}</p>--}}
    {{--第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。--}}
{{--@endforeach--}}
  1. forelse
@forelse($students as $student)
    <p>{{$student->name}}</p>

@empty
    <p>null</p>
@endforelse

模板中的 URL
1.

public function urlTest(){
    return 'urlTest';
}
`Route::any('url',['uses'=>'StudentController@urlTest','as'=>'url']);`

url()通过路由的名称生成url

<a href="{{url('url')}}">url()</a>
action()指定控制器及方法名生成url
<a href="{{action('StudentController@urlTest')}}">action()</a>
route()路由的别名
<a href="{{route('url')}}">route()</a>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值