Laravel框架基础学习

1.路由设置

    // 基础路由
Route::get('show1', function() {
return 'get测试成功';
});

Route::post('show2', function() {
return 'post测试成功';
});

// 多请求路由
Route::match(['get','post'], 'show3', function() {
return 'match测试成功';
});

Route::any('show4', function(){
return 'any测试成功';
});

// 参数 + 正则表达式验证 用例
// params[1] 1-18位 字母 数字 下划线 (必须存在)
// params[2] 1-5位 数字 (可选, 默认为空)
Route::get('user/{params}/{id?}', function($params, $id = null) {
return '你的参数是:'.$params.'
你的ID是:'.$id; })->where(['params' => '\w{1,18}','id' => '\d{1,5}']); // 路由别名 Route::any('home/userlogin', ['as' => 'login', function() { return route('login'); }]); // 路由群组 Route::group(['prefix' => 'member'], function() { // http://127.0.0.1/show1 // http://127.0.0.1/member/show1 Route::get('show1', function() { return '路由数组 - get测试成功'; }); Route::any('show4', function(){ return '路由数组 - any测试成功'; }); }); // 路由中输出视图 (不推荐 视图操作应该在Controller里面完成) Route::get('view',function() { return view('welcome'); });

路由和控制器绑定。

Route::请求方式('请求url',控制器名称@控制器下的方法)
Route::请求方式('请求url',[‘usre’=>控制器名称@控制器下的方法])
别名:
Route::请求方式('请求url',[‘usre’=>控制器名称@控制器下的方法,‘as’=>'别名'])
带参数
Route::请求方式('/demo/{id}',[‘usre’=>控制器名称@控制器下的方法])

视图 - 使用模板

直接在控制器里面调用view然后return返回即可
return view(路径/模板, [待传入的变量array格式]);
例: return view('member/info', ['id'=>$id]);

视图模板格式
注意: 一个控制器(Controller)对应一个视图(文件夹)
例: (控制器) MemberController.php  (视图文件夹)member
命名: 模板名.blade.php
例: info.blade.php

在模板中调用注册后的变量(类似Smarty中的assign)
格式: {{$变量名}}
例: {{$id}}

Model - 模型

Laravel\app\Member.php

连接数据库

1、找到数据库的配置 config/database.php
    'default' => env('DB_CONNECTION', 'mysql'), //查看默认数据库是否正确

    //看mysql的具体配置是否正确
        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
            'engine'    => null,
        ],

2、找env文件
Laravel .env 文件

修改配置
DB_HOST=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

数据库操作 - 查询构造器 新增数据

public function query1(){
    // 新增一条数据(返回bool类型 新增结果)
    // $result = DB::table('student')->insert([
    //  'name' => 'Toky',
    //  'age' => 19
    // ]);
    
    // 新增一条数据(返回int类型 新增后的主键ID)
    // $result = DB::table('student')->insertGetId([
    //  'name' => '亲爱的路人',
    //  'age' => 19
    // ]);

    // 增加多条数据(注: 只能使用insert 返回新增结果)
    $result = DB::table('student')->insert(
        [
            ['name' => 'name1', 'age' => 31],
            ['name' => 'name2', 'age' => 32]
        ]
    );
    dd($result);
}

//使用查询构造器更新数据,减少sql注入的风险

public function query2(){
    // 修改一条数据(带条件) 返回bool类型(受影响行数)
    $result = DB::table('student')
    ->where('id', 1023)
    ->update(['name'=>'query2','age'=>20]);

    // 自增并修改数据 increment 返回bool类型(受影响行数)
    $result = DB::table('student')
    ->where('id', 1023)
    ->increment('age', 2, ['name' => 'query_test2']);

    // 自减并修改数据 decrement 返回bool类型(受影响行数)
    $result = DB::table('student')
    ->where('id', 1023)
    ->decrement('age', 2, ['name' => 'query2']);

    //使用查询构造器更新数据,减少sql注入的风险
    DB::table('as_admin')->where('id', 12)->update(array('age' => 18)); //返回影响的行数
    DB::table('as_admin')->where('id', 12)->increment('age', 3); //字段自增3写,默认为1法 返回影响的行数
    DB::table('as_admin')->where('id', 12)->decrement('age', 3); //字段自减3写,默认为1法 返回影响的行数
    DB::table('as_admin')->where('id', 12)->decrement('age', 3, array('name' => '张佳宁')); //自增或自减的同时更新name字段

    dd($result);
}

数据库操作 - 查询构造器 删除数据

public function query3(){
    // 返回int类型 (受影响行数)
    $result = DB::table('student')
        ->where('id',1024)
        ->delete();
    //删除数据
    $num = DB::table('student')->where('sex','0')->delete();    //返回删除的行数
    $num = DB::table('student')->where('age','>=','22')->delete();  //注意where的参数设置
    //清空整张表   
    DB::table('student')->truncate();
    dd($result);
}

数据库操作 - 查询构造器 查询数据

public function query4(){
    // get 获取所有符合条件的数据
    // $result = DB::table('student')
        // ->where('id', '<', '1005')
        // ->get();

    // first 获取符合条件的第一条数据
    // $result = DB::table('student')
    //  ->orderBy('id', 'desc')
    //  ->where('age', '<=', '20')
    //  ->first();

    // whereRaw 多条件查询
    // $result = DB::table('student')
    //  ->whereRaw('sex = ? and age < ? and id < ?', [10, 20, 1020])
    //  ->get();

    // pluck 返回结果集中指定字段 pluck(字段, [作为下标的字段])
    // 注意: lists和pluck用法完全一致,但lists在5.3版本中已被弃用,故做了解
    // $result = DB::table('student')
    //  ->pluck('name','id');

    // select 返回指定的字段
    // $result = DB::table('student')
    //  ->select('id', 'name', 'age')
    //  ->get();

    // chunk 分段(分页)循环取数据
    $result = DB::table('student')
        ->chunk(2, function($student){
            print_r($student);
        }
    );
    // dd($result);
}

数据库操作 - 查询构造器 聚合函数

public function query5(){
    // count 查询数据条数
    // $result = DB::table('student')->count();

    // max 取最大值
    // $result = DB::table('student')->max('age');

    // min 取最小值
    // $result = DB::table('student')->min('age');

    // avg 取平均数
    // $result = DB::table('student')->avg('age');

    // sum 求和
    $result = DB::table('student')->sum('age');
    var_dump($result);
}

数据库操作 - Eloquent ORM 查询数据

1.创建Model类型 方法里面声明两个受保护属性:$table(表名)和$primaryKey(主键)


2.Controller里面以 类名::方法 (静态方法)的风格进行操作数据库

';
            // all 通过orm获取所有数据
            // $result = Student::all();

            // find 通过主键返回指定的数据
            // $result = Student::find(1001);

            // findOrFail 通过主键返回指定的数据 未查找到到则抛出异常
            // $result = Student::findOrFail(1001);

            // 获取符合条件的数据
            // $student = (Student::where('age', '<', 20)->get())['tables'];

            // 分段式(分页)获取数据递交给闭包函数循环处理
            // Student::chunk(2, function($student) {
            //  var_dump($student);
            // });

            // 查询构造器之聚合函数
            $result = Student::count();
            dd($result);
        }
    }

数据库操作 - Eloquent ORM 增加数据

1.建立model类 (app\Student.php)
[ 类 属性/方法 ]
protected $table = 表名;
protected $promaryKey = 主键名;
public $timestamps = false;  //是否开启时间戳自动调节
protected function getDateFormat() { return time(); } // 使用时间戳存入数据库
protected function asDatetime($val) { return $val; }  //将数据库里的时间戳取出时不被转换为日期
protected $fillable = ['name', 'age']; //允许批量赋值的字段 白名单设置
protected $guarded = ['aa', 'bb'];  //不允许批量赋值的字段 黑名单设置

public function orm2() {
    // 一、通过模型新增数据(涉及到自定义时间戳)
     $student = new Student();
     $student -> name = 'stu1';
     $student -> age = 20;
     $student -> save();
    
    // 二、使用模型的create方法新增数据(涉及到批量赋值)
    // $student = new Student();
     $result = $student -> create([
      'name' => 'create',
        'age' => 30
     ]);

    // firstOrCreate 查找数据并返回 如果不存在则插入该条数据并返回
    // $result = Student::firstOrCreate([
    'name' => 'aj',
        'age' => 32
    ]);

    // firstOrNew 查找数据并返回 如果不存在则返回该类的对象 调用save才得以保存
    $result = Student::firstOrNew(['name' => 'make']);
    $result = $result->save();
    dd($result);
}

数据库操作 - Eloquent ORM 修改数据

1.建立model类 (app\Student.php)
[ 类 属性/方法 ]
protected $table = 表名;
protected $promaryKey = 主键名;
public $timestamps = false;  是否开启时间戳自动调节
protected function getDateFormat() { return time(); }  使用时间戳存入数据库
protected function asDatetime($val) { return $val; }  将数据库里的时间戳取出时不被转换为日期
protected $fillable = ['name', 'age']; 允许批量赋值的字段 白名单设置
protected $guarded = ['aa', 'bb'];  不允许批量赋值的字段 黑名单设置

StudentController.php
public function orm3() {
    // 通过模型更新数据 (最后返回bool类型 单条数据是否修改成功)
    // $student = Student::find(1051);
    // $student->name = 'aj2';
    // $result = $student->save();

    // 结合查询语句批量更新 (返回int类型 受影响行数)
    $result = Student::where('id', '>', 1050)
        ->update([
            'name'=>'adj',
            'age'=>32
        ]);
}

数据库操作 - Eloquent ORM 删除数据

1.建立model类 (app\Student.php)
[ 类 属性/方法 ]
protected $table = 表名;
protected $promaryKey = 主键名;
public $timestamps = false;  是否开启时间戳自动调节
protected function getDateFormat() { return time(); }  使用时间戳存入数据库
protected function asDatetime($val) { return $val; }  将数据库里的时间戳取出时不被转换为日期
protected $fillable = ['name', 'age']; 允许批量赋值的字段 白名单设置
protected $guarded = ['aa', 'bb'];  不允许批量赋值的字段 黑名单设置

StudentController.php
public function orm4() {
    // 通过模型删除数据 (成功返回true 失败报错)
    // $result = Student::find(1050)->delete();

    // 通过主键值删除数据 (返回int类型 受影响行数)
    // $result = Student::destroy(1023, 1022);

    // 通过指定条件删除数据 (返回int类型 受影响行数)[提示:多参数使用whereRaw]
    $result = Student::where('id',1021)->delete();
}

Blade模板引擎 yield section parent stop show extends

模板引擎(section1.blade.php)
@extends('layouts')
{{-- yield --}}
{{-- extends --}}
{{-- section --}}
{{-- parent --}}
{{-- stop --}}
{{-- show --}}

@section('content')
    content
@stop

@section('footer')
    @parent
    footer
@stop

模板 (layouts.blade.php)
@yield('content', '主要内容区域')

Blade模板引擎 基础语法及include的使用

@section('footer')
    {{-- footer --}}
    {{-- 1.模板中输出php变量 --}}
    {{-- {{ $testName }} --}}
    {{-- 2.模板中执行php代码 --}}
    {{-- {{ date('Y年m月d日 H时i分s秒', time()) }} --}}
    {{-- 3.模板中强制输出 @{{ $name }} 字符串 --}}
    {{-- @{{ $age }} --}}
    {{-- 4.注释格式 --}}
    {{-- 5.子视图引用 include --}}
    @include('common1', ['message'=>'hello world'])
@stop

Blade模板引擎 流程控制 if unless for foreach forelse

@section('footer')
    {{-- 流程控制 --}}
    {{-- if ifelse else endif --}}
{{--    @if($name == 'EnzoLiu')
        i'm EnzoLiu
    @elseif($name == 'jeck')
        i'm jeck
    @else
        who am i?
    @endif --}}

    {{-- unless(if反向) --}}
{{--    @unless($name != 'EnzoLiu')
        我是EnzoLiu
    @else
        我不是EnzoLiu
    @endunless --}}

    {{-- for 循环 --}}
{{--    @for($i=0; $i<10; $i++)
        {{ $i }}
    @endfor --}}

    {{-- foreach 数组遍历 --}}
{{--    @foreach($res as $key => $value)
        {{ $key }}
{{ $value }} @endforeach --}} {{-- forelse 循环(特殊) --}} {{-- 释: $res如果有值则运行 $obj->name 代码块, 如果为空则显示 null --}} {{-- @forelse($res as $obj) {{ $obj->name }}
@empty null @endforelse --}} @stop

Blade模板引擎 模板中的URL(url action route)

@section('footer')
    {{-- url - 通过路由名字生成url --}}
    test - 1
{{-- action - 通过指定控制器和方法名生成url --}} test - 2
{{-- route - 通过别名生成url --}} test - 3 @stop

Controller之Request

input 接受指定参数(name) 如果不存在返回null
            // echo $request->input('name', 'null');
        // $request->has 判断指定参数是否存在 存在返回true 不存在返回false
            // if($request->has('name')) {
            //  echo $request->input('name');
            // }else{
            //  echo 'name参数为空';
            // }
        // $request->all 返回所有的参数(array类型)
            // $res = $request->all();
            // dd($res);
        // $request->method 返回访问类型
            // echo $request->method();
        // $request->isMethod 判断是否为指定请求类型(不区分大小写) 是为true 否则为false
            // if($request->isMethod('GET')) {
                // echo 'yes';
            // }else{
                // echo 'no';
            // }
        // $request->ajax 判断是否为ajax请求 是为true 否则为false
            // $res = $request->ajax();
            // var_dump($res);
        // $request->is 判断是否为指定路由
            // $res = $request->is('User/*');
            // var_dump($res);
        // $request->url 获取当前的url
            $res = $request->url();
            echo $res;
        }
    }
?>

Controller之Session 上

'web'], function() {
                Route::get('session1', 'StudentController@session1');
                Route::get('session2', 'StudentController@session2');
            });

            // session的三种用法:
            // 1.HTTP request session()
            // $request->session()->put('pwd', 'admin888');
            // echo $request->session()->get('pwd');
            // 2.session()
            // session()->put('pwd', 'admin123456');
            // echo session()->get('pwd');

            // 3.session::method()
            // Session::put('pwd', '123456');
                // Session::get(name, [default (String)])
            // echo Session::get('pwd2', 'default');
        }
    }
?>

// 以数组的形式存储数据
// Session::put(['name'=>'liuzhe', 'age'=>'21', 'sex'=>'m']);

// 把数据放到Session的数组中
// Session::push('name2', 'aaa');
// Session::push('name2', 'bbb');

// 取出相关session数据并删除
// $res = Session::pull('sex', 'default');

// 取出session中所有数据
// $res = Session::all();

// 判断session中是否存在某个值
// $res = Session::has('age')?'存在':'不存在';

// 删除session中指定的值
// Session::forget('name');

// 清空session
// Session::flush();

// 暂存数据session(访问一次后就自删)
// Session::flash('temp', 'test.');
    
    //保存信息
    //session()->save();

降低错误级别

app\Providers\AppServiceProvider.php
public function boot()
{
    //降低错误级别
    error_reporting(E_ALL ^ E_NOTICE);
    //
}

你可能感兴趣的:(Laravel框架基础学习)