laravel55笔记

一、路由

二、控制器

    1.路径:http/controller
    2.关联路由:
    需要先设置命名空间(namespace App\http\Controllers;);
    在继承controller基类的类中书写函数(class 类名 extents Controller{});
    添加路由(get/post/any)(路由名,类名@方法名)||或者(’路由名‘,[‘uses’ => ‘类名@方法名’,[as => ‘别    名’]])[-> where(‘参数名’),’正则表达式’]
    3.使用路由特性:

三、视图(resource/view,一个控制器对应一个目录)

    1、新建视图
    2、输出视图
    return view(‘模板目录/模板名称’[,’变量名’ =>’变量值’,…]);在视图中通过{{变量名}}来调用变量

四、模型(app目录下的php文件

    1、新建模型

namespace App;
use ….
class 类名 extends Model{
public function 方法名(){//方法内容}
}

    2、调用模型

在控制器中调用:[return] 类名::方法名();

五、数据库操作(查询构造器)

    1.连接数据库

config ->database.php
修改env文件中的数据库配置

    2. 使用数据库操作语句(语句中的变量用?表示,在括号里语句结尾处写变量值)

在控制器的方法中使用,eg:
        (1)查询
result=DB::select(′selectfromtable1whereid>?′,[20]);dd

result)返回查询结果(数组形式)
        (2)插入DB::insert(‘插入语句’);||DB::table(‘tablename’)->insert([‘name’=>’str1’,’name2’=>’str2’])返回布尔值
        (3)更新(准确更新、自增自减【一定要带条件,条件跟在table名后面】
DB::update(‘更新语句’); //返回修改行数
DB::table(‘tablename’)->where(‘columnname’,’str’)->update([‘name’ => ‘str1’]); //返回修改的行数
DB::tabele(”tablename)->increment(‘colnumname’,[num].[‘name’ => ‘str’]); //默认自增1,num设置自增数量,最后一个参数可以在设置自增时修改字段
DB::tabele(”tablename)->decrement(‘colnumname’,[num]); //默认自减1,num设置自减数量
        (4)删除DB::delete(‘删除语句’); 返回删除行数
        (5)使用查询构造器查询函数
DB::table(‘tablename’)->get(); //获取表中所有数据
DB::table(‘tablename’)[->orderBy(‘id’,’desc’)]->first(); //获取第一条
DB::table(‘tablename’)[->whereRaw(‘col1 > ? and col2 > ?’,[num1,num2])]->pluck(‘colname’); //返回指定字段【多条件查询示范】
DB::table(‘tablename’)->lists(‘col1’[,’col2’]); //返回指定字段,可以以键col2为下标
DB::table(‘tablename’)->select(‘col1’,’col2’,’col3’)->get(); //指定查询的某些字段
DB::table(‘tablename’)->chunk(num,function(){ //查询后执行的操作,return false可以停止查询 }); //分段返回查询的值,每段num条数据
        (6)查询构造器中的聚合函数
DB::table(‘tablename’)->count(); //返回表中的数据条数
DB::table(‘tablename’)->max(‘columnname’); //返回列中最大值
DB::table(‘tablename’)->min(‘columnname’); //返回列中最小值
DB::table(‘tablename’)->avg(‘columnname’); //返回列中平均值
DB::table(‘tablename’)->sum(‘columnname’); //返回列中和

五、Eloquent ORM(laravel自带,每个数据表都有一个与之对应的model) 操作数据库

    1.在app/建立模型,可用cmd命令建立,与数据表进行关联,默认表名是模型名的复数,若不是,则可在模型类中写入:

protected table=‘tablename′;//手动指定表名protectedprimaryKey = ‘id’; //手动指定主键

    2.在控制器中在函数中进行操作数据库模型

modelname::all(); //返回表中数据集合
modelname::find(主键中的值); //通过主键查找表中数据,返回模型对象
modelname::findOrFail(主键值); //通过主键查找表中数据,如果没查到就报错

    3.添加相应路由访问控制器

    4.使用模型构造器操作数据库(与第四相似)

DB::table(‘tablename’)->where[].. 换成 modelname::where[]…

    5.ORM的新增、自定义时间戳、批量赋值

        (1)通过模型新增数据(涉及自定义时间戳)
在控制器的方法中操作:
new一个模型对象【eg:student=newStudents();】,然后用student操作;
操作1:增删查改;操作2:save()方法
eg:student−>name=‘name1′;student->age = 18;
student−>save();//返回值为布尔值,默认有时间戳(新增时间、修改时间)并自动维护,若想关闭则可在模型中设置publictimestamps = false;
模型中函数操作:
protected function getDateFormat(){ return time(); } //可以在控制器中通过字段名调用时间戳,默认为格式化(年月日时分秒);
protected function asDateTime(val)return$val;//直接返回数据表中数据,不格式化,在控制器中格式化语句为:echodate(′YmdH:i:s′,student->created_at);
    (2)使用模型的Create方法新增数据(涉及到批量赋值)
modelname::create([‘col1’ => ‘str1’,’col2’ =>’str2’]); //默认不可批量赋值,需要在模型中加入语句:【protected fillable=[′col1′,′col2′];//指定允许批量赋值的字段;protectedguarded=[]; //设置不允许批量赋值的字段】,返回值为表模型;
    (3)firstOrCreate()函数 //查找,若没有则新增
eg:modelname::firstOrCreate([‘colname’ => ‘str’]);

    (4)firstOrNew()函数 //以属性查找,若没有则创建新的实例,需要保存自己调用save();

            eg:modelobj = modelname::firstOrNew(['colname' => 'str']);

            $modelobj->save();

    (5)通过模型更新数据

            eg:$obj=modelname::find(keyname);

                $obj->colname='str';

    (6)结合查询语句批量更新

            eg:modelname::where()->update([]);

    (7)通过ORM删除 数据

           eg:$modelobj=modelname::find(key);

                $modelobj->delete();

    (8)通过主键删除

            tablename::destory(keynum1,num2); //返回值为删的记录值,也可把主键值写到数组中
    (9)根据条件删除
            tablename::where()->delete();

六、Blade模板引擎(view的使用)

    1、简介

        Blade是一种模板引擎,可在view中使用php原生代码,所有的Bland视图页面都将被编译成原生的php代码并缓存起来,模板文件修改才会重新编译(不给应用增加负担)。

    2、模板继承(section、yield、extends、parent)

        优点:减少代码重复率,提高相同页面部分利用率

        位置:在resource>views中,命名为viewname.blade.php,使用时指定viewname即可(例如使用views中的student文件夹下模板:view(‘student.viewname’),点和斜线都可以)

    (1)section既可用来定义视图片段,又可扩展子模版

        用法:@section(‘’)

                    ….content

                  @show

    (2)yield用来展示某个指定section的内容,相当于占位符,用子模版去实现(不可扩展)

    (3)在子模版中实现布局(section)

       · @extends('view目录下的模板')

        ·重写某个部分(section)

                @section('sectionname')

                    [@parent]    //继承视图中的内容,不加为完全重写

                    .....内容

                @end

    (4) 在子模版中实现布局(yield)

            @section('sectionname')

                    .....内容            //重写所有内容

                @end

3.基础语法及include的使用

    (1){{ $变量名 }}        //模板中输出php变量【在section中操作】 变量在控制器中,也可在控制器返回view时传变量

    (2){{ 函数名(参数) }}        //

    (3){{ $name or 'default' }}        //若变量name不存在就输出default

    (4)@{{ $name }}    //原样输出

    (5){{--模板中注释--}}    //在页面源代码中看不到

    (6)@include('路径'[,'变量名' =>'内容'])    //引入子视图,变量是从子视图中传入的,在引入时给参数赋值

4.模板中的流程控制(if,)

    (1)@if (语句)    {...输出的语句}

            @elseif(语句)    {..输出的语句}

            @else    {...}

    (2)@unless(返回布尔值语句)        //x相当于if的取反

    (3)@for($i = 0;$i<5;$i++)

                语句(可以是带html标签的内容)

            @endfor

    (4)@foreach($name as $i)

            ...//对$i进行操作

            @endforeach

    (5)@forelse($name as $i)

            ...//对$i进行操作

            @empty

            ...//当数组为空时的操作

            @endforelse

    5.模板中的url(url(),action(),route())

        (1)href="url('routename')"    //通过路由的名字生成url,常用

        (2)href="action('controllername@方法名')"//通过指定控制器和方法名生成url

        (3)href="route('别名')"//通过route的别名生成url,常用

七、中间件闭包的使用

   1.闭包的概念

       Closure,匿名函数,又称为Anonymous function(没有定义名字的函数),简单来说就是直接将未命名的函数赋给变量,可以直接用变量来调用函数。

        eg:$f=function($i){ $i };    function b(Closure $closure){ return $closure;}    b($f(2));

        闭包可以作为参数,也可以作为函数返回值。

   

       

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值