当前位置: 首页 > 工具软件 > laravel-s > 使用案例 >

laravel(一)

王嘉木
2023-12-01

Laravel
    简介
        Laravel是一套简洁、优雅的PHP Web开发框架
    运行环境要求
        PHP >= 5.5.9      PHP版本5.5.9
        OpenSSL    对数据进行加密
        mbstring mbstring 提供了针对多字节字符串的函数,能够帮你处理 PHP 中的多字节编码
        Mcrypt PHP 扩展  提供多种算法
        Tokenizer    能够对php代码进行分割
        扩展打开
            phpinfo()
                通过phpinfo去查找文件
            D:\wamp\bin\php\php5.6.15\php.ini  找到配置项打开
            D:\wamp\bin\php\php5.6.15\ext 扩展文件存放地址
            重启apache
    安装
        composer 安装完毕
        composer create-project laravel/laravel 项目名称 --prefer-dist "5.1.*"
    配置
        程序秘钥
            \wamp\www\laravel-v5.1.11>php artisan key:generate
        修改时区
            config/app
                timezong => 'PRC';
        修改数据库返回的结果值类型
            文件位置
                config/databases.php
            修改项
                'fetch' => PDO::FETCH_CLASS,
        获取和设置配置
            Config::get('app.timezone');
            Config::set('app.locale', 'cn');
        关闭和重启应用
            关闭 php artisan down
                resources\views\errors\503.blade.php
            启动 php artisan up
                resources\views\welcome.blade.php
    路由
        文件位置
            app/Http/routes.php
        基本路由
            Route::get('/test',function(){});
            Route::post('./post',function(){});
        带参数的路由
            普通使用
                Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});
            限定参数类型
                Route::get('/param/{name}', function($name){
    return $name;
})->where('name','[a-z]+');
        传递多个参数
            Route::get('/getParams/{name}/{id}', function($name, $id){
    //请求对象
    // echo $name;
    // echo $id;
});
        路由别名
            Route::get('/Home/Goods/show/{id}', ['as'=>'goods', 'uses'=>function($id){
    //普通创建url
    // echo url('/param/hahah').'<br>';
    //路由别名创建url
    // echo route('goods',['id'=>11]).'<br>';
    //实现页面跳转
    // return redirect()->route('goods',['id'=>12]);
    //获取路由名称
    return Route::currentRouteName();
}]);
        路由组的设置
            Route::group([], function(){
           Route::get('/404', function(){
               abort(404,'not found!!!');
    });
});
        404页面设置
            设置模板 -> resources/views/errors/404.blade.php
        csrf保护
            form
                {{ csrf_field() }}
            发送ajax请求
                1.在head头里面加入<meta name="csrf-token" content="{{ csrf_token() }}">
    2.        $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    中间件
        作用
            身份验证之外,中间件也可以被用来运行各式各样的任务
        安装
            php artisan make:middleware LoginMiddleware
        实例代码
            <?php

namespace App\Http\Middleware;

use Closure;

class LoginMiddleware
{
    public function handle($request, Closure $next)
    {
        //request变量 记录所有的请求参数
      if($request->session()->has('id')){
            //通过session 来检测用户是否登录
            //进入下一层 请求
            return $next($request);
        }else{
            //跳转到指定的路由方法
            return redirect('login');
        }
    }
}
        路由注册
            Kernel.php >>>> $routeMiddleware成员属性
            'login' => \App\Http\Middleware\LoginMiddleware::class,
        使用    
            Route::group(['middleware' => 'login'],function(){
    Route::get('/admin',function(){
        echo '这里是后台的首页';
    });
    
    Route::get('admin/user',function(){
        echo '这是后台的用户界面';
    });
});
            Route::get('/middleware',function(){
    echo '这是中间件的显示';
})->middleware('login');
    控制器
        创建一个控制器
            php artisan make:controller UserController(控制器的名称)
        访问路由
            Route::get('/User/add', 'UserController@add');
        带参数访问
            Route::get('/User/edit/{id}', 'UserController@edit');
        别名
            设置  Route::get('/User/index', ['uses' => 'UserController@index','as' => 'user']);
            使用
                route('');
        中间控制
            Route::get('/user/edit/{id}', [
    'middleware' => 'login',
    'uses' => 'TestController@edit']
    );
        隐式控制器
            路由
                Route::controller('users', 'UserController');
            使用
                <?php

namespace App\Http\Controllers;

class UserController extends Controller
{
    /**
     * 响应/users的GET请求
     */
    public function getIndex()
    {
        //
    }

    /**
     * 响应/users/show/1的GET请求
     */
    public function getShow($id)
    {
        //
    }
}
        资源控制器
            创建:    php artisan make:controller PhotosController
            使用:Route::resource('photos', 'PhotosController');
            
    请求
        基本信息获取
            请求路径
                $request->path()
            检查路径
                $request->is('admin/*')
            获取完整url    
                $request -> url()
            获取请求的方式
                $request->method();
            检测当前请求的方式
                $request->isMethod('post')
            获取请求参数
                $name = $request->input('name');
            默认值设置
                $request->input('name', 'Sally');
            检查值是否存在
                $request->has('name')
            获取所有参数
                $request -> all()
            提取部分
                $request->only(['username', 'password']);
                    获取指定
                $request->except(['credit_card']);
                    除了当前给定
        闪存信息
            将所有的请求参数写入闪存中
                $request->flash()
                案例:用户名:<input type="text" name='username' value="{{ old('username') }}">
            将部分参数写入闪存中
                $request->flashOnly('title','price')
            将某些值去除后存到闪存中
                $request->flashExcept('_token');
            简便使用
                return back()->withInput();
        文件操作
            检测是否有文件上传
                $request->hasFile('photo')
            将文件移动到制定位置
                $request->file('photo')->move('./uploads/', 'iloveyou.jpg');
            获取文件的后缀
                $request -> file('file') ->getClientOriginalExtension();
        cookie
            设置
                \Cookie::queue('name','iloveyou',10);
                    设置cookie的时间为10分钟
                return response('haha')->withCookie('uid',10,10);
            读取
                $request->cookie('name');
                \Cookie::get('name');
        session
            设置: session(['key'=>'value'])
            获取: session('key')
    响应
        显示模板
            return view('goods.add');
        返回json
            return response()->json(['a'=>100,'b'=>2000]);
        下载文件
            return response()->download('web.config');
        页面跳转
            return redirect('/goods/add');
    视图
        解析模板    
            return view('index')
        分配数据到模板
            view('user.edit',['username'=>'admin'])
        模板引擎 blade
            模板的默认存放位置
                resources/views
            占位符
                @yield('title')
                @section('content')

@show
            新模板内容
                @extends('index')
                @section('title', 'new Title')
                @section('content')
      new contents  is here
@endsection
            使用变量
                {{$username}}
            使用注释
                {{--  内容  --}}
            使用函数
                {{ time() }}
            设置默认值
                {{ $str or 'aaaaaaa' }}
            显示html代码
                {!! $name !!}
            引入子视图
                @include('header')
            流程控制
                @if (count($records) === 1)
    I have one record!
@elseif (count($records) > 1)
    I have multiple records!
@else
    I don't have any records!
@endif
            循环控制
                @for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor
                @foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>
@endforeach
    数据库操作
        支持数据库的类型
            MySQL
Postgres
SQLite
SQL Server
        数据库链接配置
            文件位置
config/database.php
            结果集的返回类型
'fetch' => PDO::FETCH_ASSOC
            .env环境快速配置
        数据库基本操作
            注意:将类导入
            查询
                DB::select('select * from users where active = ?', [1]);
            插入
                DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);
            修改
                DB::update('update users set votes = 100 where name = ?', ['John']);
            删除
                DB::delete('delete from users');
            一般语句
                DB::statement('drop table users');
            事务操作
                开启事务   DB::beginTransaction();
                提交事务    DB::commit()
                回滚事务   DB::rollBack()
        查询构造器
            增删查改
                查询
                    查询所有        DB::table('users')->get()
                    查询单条        DB::table('users')->first()
                    查询字段        DB::table('users')->select('name', 'email as user_email')->get()
                插入
                    单条
                        DB::table('users')->insert(
    ['email' => 'john@example.com', 'votes' => 0]
);
                    多条
                        DB::table('users')->insert([
    ['email' => 'taylor@example.com', 'votes' => 0],
    ['email' => 'dayle@example.com', 'votes' => 0]
]);
                    获取ID插入
                        $id = DB::table('users')->insertGetId(
    ['email' => 'john@example.com', 'votes' => 0]
);
                删除
                    DB::table('users')->where('id', '<', 100)->delete();
                修改
                    DB::table('users')
            ->where('id', 1)
            ->update(['votes' => 1]);
            连贯操作
                条件
                    DB::table('users')
                ->where('name', 'like', 'T%')
                ->get()
                    DB::table('users')
                    ->where('votes', '>', 100)
                    ->orWhere('name', 'John')
                    ->get();
                    DB::table('users')
                    ->whereBetween('votes', [1, 100])->get()
                    DB::table('users')
                    ->whereIn('id', [1, 2, 3])
                    ->get()
                排序
                    orderBy('name', 'desc')
                分页
                    DB::table('users')->skip(10)->take(5)->get();
                表链接
                    DB::table('users')
            ->join('contacts', 'users.id', '=', 'contacts.user_id')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();
                计算
                    总和
                         DB::table('users')->count()
                    最大值
                        DB::table('orders')->max('price')
                    平均值
                        DB::table('orders')->avg('price')
    设置自定义函数和自定义类文件
        在app中创建文件夹  App\common\function.php
        在composer.json  添加files选项
            "autoload": {
        "classmap": [
            "database"
        ],
        "files":[
            "App/common/function.php"
        ]
    },
        更新composer
            composer dump-auto
    调试工具
        debugbar安装
            composer require barryvdh/laravel-debugbar v2.4.0
            在config/app.php里面的providers添加
Barryvdh\Debugbar\ServiceProvider::class,
        sql打印 方法一
            在路由文件添加
             DB::listen(function($sql, $bindings, $time) {
                // dump($sql);
            });
        打印sql    方法二
             DB::connection()->enableQueryLog(); // 开启查询日志   
            \DB::table('xxx'); // 要查看的sql  
            $queries = \DB::getQueryLog(); // 获取查询日志  
 
print_r($queries); // 即可查看执行的sql,传入的参数等等 

 类似资料: