美文网首页
Laravel框架基础学习

Laravel框架基础学习

作者: 七百年前 | 来源:发表于2018-04-04 10:21 被阅读63次

    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.'<br>你的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
    <?php
        namespace App;
        use Illuminate\Database\Eloquent\Model;
        class Member extends Model{
            public static function getMember(){
                return 'My name is EnzoLiu';
            }
        }
    
    Controller调用:
    <?php
        namespace App\Http\Controllers;
        use App\Member;
        class MemberController extends Controller{
            public function info($id = null){
                return Member::getMember();
            }
        }
    ?>
    

    连接数据库

    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(主键)
    <?php
        namespace App;
        use Illuminate\Database\Eloquent\Model;
        class Student extends Model{
            protected $table = 'student';
            protected $primaryKey = 'id';
        }
    ?>
    
    2.Controller里面以 类名::方法 (静态方法)的风格进行操作数据库
    
    <?php
        namespace App\Http\Controllers;
        use Illuminate\Support\Facades\DB;
        use App\Student;
        class StudentController extends Controller{ 
            public function orm1() {
                echo '<pre>';
                // 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)
    <div class="main">      
        <div class="content">
            @yield('content', '主要内容区域')
        </div>
    </div>
    <div class="footer">
        @section('footer')
            底部
        @show
    </div>
    

    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 }}<br>{{ $value }}
        @endforeach --}}
    
        {{-- forelse 循环(特殊) --}}
        {{-- 释: $res如果有值则运行 $obj->name 代码块, 如果为空则显示 null --}}
    {{--    @forelse($res as $obj)
            {{ $obj->name }}<br>
        @empty
            null
        @endforelse --}}
    @stop
    

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

    @section('footer')
        {{-- url - 通过路由名字生成url --}}
        <a href="{{ url('url') }}">test - 1</a><br>
        {{-- action - 通过指定控制器和方法名生成url --}}
        <a href="{{ action('StudentController@urltest') }}">test - 2</a><br>
        {{-- route - 通过别名生成url --}}
        <a href="{{ route('u') }}">test - 3</a>
    @stop
    

    Controller之Request

    <?php
        namespace App\Http\Controllers;
        use Illuminate\Http\Request;
        class StudentController extends Controller{
            public function request1(Request $request) {
            // $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 上

    <?php
        namespace App\Http\Controllers;
        use Illuminate\Http\Request;
        use Illuminate\Support\Facades\Session;
        class StudentController extends Controller{
            public function session1(Request $request) {
                // 开启session: (中间件 - 路由群组方式)
                Route::group(['middleware'=>'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();

    相关文章

      网友评论

          本文标题:Laravel框架基础学习

          本文链接:https://www.haomeiwen.com/subject/gpahhftx.html