laravel 控制器之Request

在使用Request之前首先需要在控制器引入

use Symfony\Component\HttpFoundation\Request;

控制器:

//取值
        echo $request->input('name');
        echo $request->input('sex','数据不存在');

        if ($request->has('sex')) {
            echo $request->input('sex');
        }else{
            echo '没有这个参数';
        }
        //获取全部数据
        $res = $request->all();


        //请求类型
        echo $request->method();

        //判断请求类型
        if ($request->isMethod('post')) {
            echo 'yes';
        }else{
            echo 'no';
        }
        //判断请求类型是否为ajax
        $res = $request->ajax();
        var_dump($res);
        //判断请求路径是否符合指定规则
        $res = $request->is('member/*');
        var_dump($res);

 

Laravel 模板之流程控制

控制器:

public function test ()
    {
        $data = ['name' =>  'xiaobai','age' =>  29];
        $name = 'xiaobai';
        $list = Student::get();
        return view('test.demo',[
            'info'    =>  $data,
            'name'    =>  $name,
            'list'    =>  $list
        ]);
    }

视图:

{{--流程控制--}}
    @if ($name == 'xiaobai')
        yes
    @elseif ($name == 'xiaohei')
        xiaohei
    @else
        default
    @endif

    <br>
    @if (in_array($name,$info))
        yes
    @else
        no
    @endif

    <br>
    {{--跟if 相反,比如下面这个判断,如果是if那么是成立的,但是unless则相反--}}
    @unless($name == 'xiaobai')
        yes
    @endunless

    <br>
    @for($i=0;$i<3;$i++)
        <p>{{$i}}</p>
    @endfor

    <br>
    @foreach($list as $v)
        <p>{{$v->name}}</p>
    @endforeach

    @forelse($list as $v)
        <p>{{$v->name}}</p>
    @empty
        <p>如果$list为空的话则显示这里</p>
    @endforelse

 

Laravel 变量输出以及引入子视图

控制器:

public function demo ()
    {
        $data = ['name' =>  'xiaobai','age' =>  29];
        $name = 'xiaobai';
        return view('test.demo',['info'    =>  $data,'name'    =>  $name]);
    }

视图:

@extends('layouts')

@section('header')
    @parent
header
@stop

@section('content')
    @parent
    {{--模板中输出变量--}}
    {{$info['name']}}
    {{--模板中输出php函数--}}
    <p>{{time()}}</p>
    <p>{{date('Y-m-d H:i:s',time())}}</p>
    <p>{{var_dump($info)}}</p>
    <p>{{ in_array($name,$info) ? '在' : '不在' }}</p>
    <p>{{ isset($name) ? $name : '默认值' }}</p>
    <p>{{ $name1 or '默认值' }}</p>

    {{--原样输出--}}
    <p>@{{ $name }}</p>

    {{--引入子视图--}}
    @include('test.message',['message'  =>  '信息输出'])
@stop

子视图:

<p>我是子继承{{$message}}</p>

 

 

Larave 模板继承

/resources/views/layouts.blade.php
//模板文件
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>TEST DEM @yield('title')</title>
    <style type="text/css">
        body{
            margin: 0;
            padding: 0;
        }
        .header{
            width: 100%;
            height: 69px;
            margin-bottom: 10px;
            background-color: #5bc0de;
        }
        .nav{
            width: 100%;
            margin-bottom: 10px;
            height: 300px;
        }
        .sidebar{
            width: 30%;
            height: 100%;
            float: left;
            background-color: #5bc0de;
        }
        .content{
            width: 65%;
            height: 100%;
            float: right;
            background-color: #5bc0de;
        }
        .footer{
            width: 100%;
            height: 50px;
            background-color: #5bc0de;
        }
    </style>
</head>
<body>
<div class="header">
    @section('header')
    头部
    @show
</div>
<div class="nav">
    <div class="sidebar">
        @section('sidebar')
        侧边栏
        @show
    </div>
    <div class="content">
        @yield('content','内容')

    </div>
</div>

<div class="footer">
    @section('footer')
    底部
    @show
</div>
</body>
</html>

 

/resources/views/demo/test.php
//该文件继承layouts.blade.php文件
//继承文件
@extends('layouts')
//重写
@section('header')
   /继承模板文件里面的内容
    @parent
header
@stop

 

Laravel ORM操作CURD

//ORM 查询全部
        $ret = Student::all();
        //ORM查询指定id
        $ret = Student::find(1);
        //ORM查询指定ID 如果没找到则抛出错误
        $ret = Student::findOrFail(9);
        //ORM配合构造器使用
        $ret = Student::where('id','>',1)
            ->orderBy('age','desc')
            ->first();

        //使用模型新增数据
        $model = new Student();
        $model->name = 'xiaok';
        $model->age = 80;
        $ret = $model->save();
        //根据ID查询
        $ret = Student::find(4);
        //如果是这样的话会报错,系统禁止批量插入。需要在对应的模型里面增加$fillable属性
        $ret = Student::create(
            ['name' =>  'new','age' =>  1]
        );
        //根据条件查询对应的数据,如果没有则直接新增。
        $ret = Student::firstOrCreate(
            ['name' =>  'xiaobai']
        );
            //根据条件查询,如果没有则返回查询的条件内容
            $ret = Student::firstOrNew(
                ['name' =>  'xiaobaik']
            );
            //配合save也可以达到新增
            $ret->save();

            //通过模型更新数据
        $student = Student::find(5);
        $student->age = 11;
        $ret = $student->save();
        //配合构造器更新数据
        $ret = Student::where('id','>',4)->update(
            ['age'  =>  86]
        );

            //通过模型删除数据
        $student = Student::find(6);
        $ret = $student->delete();
        //倒序分页查询,offset设置启始查询,limit查询条数
        Student::orderBy('id','desc')->offset(0)->limit(10)->get();

            //通过主键删除
        $ret = Student::destroy(5);
        //可是直接写
        $ret = Student::destroy(5,6);
        //可以是数组
        $ret = Student::destroy([5,6]);
        //配合构造器使用
        $ret = Student::where('id','>=',4)->delete();

 

Laravel 构造器操作CURD

//插入数据,返回布尔值
        $bool = DB::table('student')->insert(
            ['name' => 'xiaohei','age'  =>  37]
        );

        //插入数据,返回ID键值
        $id = DB::table('student')->insertGetId(
            ['name' =>  'sky','age' =>  100]
        );

        //插入多条数据
        $bool = DB::table('student')->insert([
            ['name' =>  'xiaoxiaobai','age' =>  12],
            ['name' =>  'xiaoj','age'   =>  18]
        ]);


       // 自增,默认是1,后面可以跟置顶值,如:increment('age',3),那么会自增3
        $num = DB::table('student')->increment('age');

        //自减
        $num = DB::table('student')->decrement('age');

        //带条件的自减
        $num = DB::table('student')
            ->where('id',1)
            ->decrement('age');

       // 在自减的同时修改name值
        $num = DB::table('student')
            ->where('id',1)
            ->decrement('age',2,['name'=>'updateok']);

        //删除置顶数据
        $num = DB::table('student')
            ->where('id',6)
            ->delete();

       // 带判断的条件删除
        $num = DB::table('student')
            ->where('id','>=',4)
            ->delete();

        //清空数据表,不返回任何值
        DB::table('student')->truncate();

        //查询全部
        $result = DB::table('student')->get();

        //查询一条
        $result = DB::table('student')
            ->orderBy('id','desc')
            ->first();
       // 条件查询
        $result = DB::table('student')
            ->where('id','>=',1)
            ->get();
       // 多条件查询
        $result = DB::table('student')
            ->whereRaw('id >= ? and age > ?',[1,23])
            ->get();
       // 查询单个字段
        $result = DB::table('student')
            ->pluck('name');
       // 查询指定字段,并使用ID作为下标
        $result = DB::table('student')
            ->lists('name','id');
           // 查询指定字段
            $result = DB::table('student')
                ->select('id','name','age')
                ->get();
       // 分段查询数据。如果要结束查询只要return false
        DB::table('student')->chunk(1,function($result){
                dd($result);
        });
            //统计多少条数据
            $num = DB::table('student')->count();
            //查询指定字段的最大值
            $num = DB::table('student')->max('age');
            //查询指定字段的最小值
            $num = DB::table('student')->min('age');
            //统计指定字段的平均值
            $num = DB::table('student')->avg('age');
            //统计自定字段的总和
            $num = DB::table('student')->sum('age');

 

laravel DB facade数据库操作

 //新增
        $bool = DB::insert('insert into student(name,age) values(?,?)',['xiaobai',30]);
        var_dump($bool);
        //修改,返回修改了几行
         $num = DB::update('update student set age = ? where name = ?',['26','rookie']);
         dd($num);
        //查询
         $result = DB::select('select * from student');
         dd($result);
        //删除
         $num = DB::delete('delete from student where id > ?',[1]);
         dd($num);

 

Laravel学习之路由

/**
 * 路有种输出视图
 */
Route::get('/', function () {
    return view('welcome');
});

/**
 * 基础路由
 */
Route::get('base',function(){
    return 'hello word!';
});
Route::post('base',function(){
    return 'hello word!';
});

/**
 * 多请求路由
 */
Route::match(['get','post'],'multy1',function(){
    return '多请求路由';
});

Route::any('multy2',function(){
    return '所有类型路由';
});

//路由参数
Route::get('user/{id}',function($id){
    return 'user-' . $id;
});

/**
 * 如果$name 不设默认值,那么访问缺少参数时会报错,有默认值时如果缺少参数会直接使用默认值
 */

Route::get('user/{name?}',function($name = null){
    return 'user-' . $name;
});

/**
 * 参数条件过滤,当ID的值为数字时通过。
 */
Route::get('user/{id}',function($id = null){
    return 'userid = ' . $id;
})->where('id','[0-9]+');

/**
 * 多参数条件过滤。
 */

Route::get('user/{id}/{name?}',function($id = null,$name = null){
    return 'userid = ' . $id . ' -name- ' . $name;
})->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);

/**
 * 路由别名
 */
Route::get('user/center',['as' => 'center',function(){
    return route('center');
}]);

/**
 * 路由群组,'prefix' 前缀,比如访问下面的地址为:/member/user/center,/member/user/{id}
 */
Route::group(['prefix' => 'member'],function(){

    Route::get('user/center',['as' => 'center',function(){
        return route('center');
    }]);

    Route::get('user/{id}',function($id){
        return 'member-user-' . $id;
    });
});

//路由绑定控制器

Route::get('member/info',['uses' => '[email protected]']);
/**
 * 给绑定控制器的路由设定别名
 */
Route::get('member/info',[
    'uses'  =>  '[email protected]',
    'as'    =>  'memberinfo'
]);
/**
 * 带参数
 */
Route::get('member/{id}',['uses' => '[email protected]']);

 

Thinkphp自适应上传多个或单个文件

/**
     * 上传图片
     * @return mixed
     */
	protected function uploadImg()
    {
        $upload = new \Think\Upload();  // 实例化上传类
        $upload->maxSize   =     3145728 ;  // 设置附件上传大小
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');    // 设置附件上传类型
        $upload->rootPath  =     './Uploads/';  // 设置附件上传根目录
        $upload->savePath  =     'images/';    //设置附件上传(子)目录
        // 上传文件
        $info   =   $upload->upload();
        if(!$info) {// 上传错误提示错误信息

            $msg['status'] = 2;
            $msg['msg'] = $upload->getError();
        }else{// 上传成功
            $msg['status'] = 1;
            $msg['result'] = self::getImg($info,$upload->rootPath);
            $msg['msg'] = '上传成功!';
        }
        return $msg;
    }

    /**
     * @param $data 数据元
     * @param $file 文件根路径
     * @return array|string
     */
    static function getImg ( $data , $file ) {

	    $filename = substr($file,1);

        if (count($data) === 1) {
            $newarr = current($data);
            $info = $filename . $newarr['savepath'].$newarr['savename'];
            return $info;
        }else{
            $arr = array();
            foreach ($data as $key => $value){
                $arr[$key] = $filename . $value['savepath'].$value['savename'];
            }
            return $arr;
        }
    }