Laravel开发相关笔记

  1. 作者QQ:67065435 QQ群:669756510

  2. 本站内容全部为作者原创,转载请注明出处!

  3. 三方开发相关的笔记

参考链接

安装

  1. 获取Laravel安装器

    # 仅PHP8单版本
    composer global require laravel/installer
    # PHP多版本
    /path/to/php8 /path/to/composer8 global require laravel/installer
    
  2. 获取Laravel代码

    # 安装器获取最新版
    laravel new [项目名]
    
    # composer获取最新版本
    composer create-project --prefer-dist laravel/laravel [项目名]
    # composer获取指定版本
    composer create-project --prefer-dist laravel/laravel=10.* [项目名]
    

目录结构

  1. 常用目录及文件

    # 路由目录、文件
    routes/web.php
    
    # 通过修改以下文件定义web.php以外的路由文件
    app/Http/Kernel.php
    app/Providers/RouteServiceProvider.php
    
    # 控制器目录、文件
    app/Http/Controllers/XxxController.php
    
    # 视图目录、文件
    resources/views/xxx.blade.php
    
    # 模型目录、文件
    app/Models/Xxx.php
    

路由、控制器、视图、模型

  1. 路由(routes/web.php)

    <?php
    
    use Illuminate\Support\Facades\Route;
    use App\Http\Controllers\User;
    
    //用户信息
    Route::get('/api/user/{userId}', [User::class, 'user']);
    
    //用户列表
    Route::get('/api/users/{page}', [User::class, 'users']);
    
    //用户信息view
    Route::get('/api/user_view/{userId}', [User::class, 'userView']);
    
    //用户列表view
    Route::get('/api/users_view/{page}', [User::class, 'usersView']);
    
  2. 控制器(app/Http/Controllers/UserController.php)

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Routing\Controller as BaseController;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Http\Request;
    
    class User extends BaseController
    {
        //用户信息
        public function user(Request $request, $id)
        {
            //$get = $request->query->all();
            //$request = $request->all();
            $user = DB::table('admin_users')
                ->where('id', '=', $id)
                ->first();
            $user = json_decode(json_encode($user), true);
            $content = json_encode(
                $user,
                JSON_PRETTY_PRINT |
                JSON_UNESCAPED_SLASHES |
                JSON_UNESCAPED_UNICODE
            );
            $status = 200;
            $headers = [];
            return response($content, $status, $headers);
        }
    
        //用户列表
        public function users(Request $request, $page)
        {
            //$get = $request->query->all();
            //$request = $request->all();
            $size = 10;
            $node = intval(bcmul(bcsub($page, 1, 0), $size, 0));
            $users = DB::table('admin_users')
                ->orderBy('id', 'asc')
                ->limit($size)
                ->offset($node)
                ->get();
            $users = json_decode(json_encode($users), true);
            $content = json_encode(
                $users,
                JSON_PRETTY_PRINT |
                JSON_UNESCAPED_SLASHES |
                JSON_UNESCAPED_UNICODE
            );
            $status = 200;
            $headers = [];
            return response($content, $status, $headers);
        }
    
        //用户信息view
        public function userView(Request $request, $id)
        {
            //$get = $request->query->all();
            //$request = $request->all();
            $user = DB::table('admin_users')
                ->where('id', '=', $id)
                ->first();
            $user = json_decode(json_encode($user), true);
            return view('user', $user);
        }
    
        //用户列表view
        public function usersView(Request $request, $page)
        {
            //$get = $request->query->all();
            //$request = $request->all();
            $size = 10;
            $node = intval(bcmul(bcsub($page, 1, 0), $size, 0));
            $users = DB::table('admin_users')
                ->orderBy('id', 'asc')
                ->limit($size)
                ->offset($node)
                ->get();
            $users = json_decode(json_encode($users), true);
            return view('users', ['users' => $users]);
        }
    }
    
  3. 视图

    <!--如果视图文件存在目录中,则以'目录/文件'方式调用视图文件-->
    <!--{!!$name!!}会解析标签不过滤-->
    <!--可以直接调用php函数-->
    
    <!--resources/views/users.blade.php-->
    <!doctype html>
    <html lang=zh>
    <head>
        <title>控制器路由-调用视图</title>
        <meta charset=UTF-8>
    </head>
    <body>
    @foreach($users as $user)
        <h1>id: </h1>
        <h2>username: </h2>
        <h2>name: </h2>
        <h2>avatar: </h2>
        <h2>created_at: </h2>
        <h2>updated_at: </h2>
        @isset($user['score'])
            @if($user['score'] >= 90)
                <h2>成绩:优秀</h2>
            @elseif($user['score'] >= 60)
                <h2>成绩:良好</h2>
            @else
                <h2>成绩:一般</h2>
            @endif
        @endisset
    @endforeach
    </body>
    </html>
    
    <!--resources/views/user.blade.php-->
    <!doctype html>
    <html lang=zh>
    <head>
        <title>控制器路由-调用视图</title>
        <meta charset=UTF-8>
    </head>
    <body>
    <h1>id: </h1>
    <h2>username: </h2>
    <h2>name: </h2>
    <h2>avatar: </h2>
    <h2>created_at: </h2>
    <h2>updated_at: </h2>
    @isset($score)
        @if($score >= 90)
            <h2>成绩:优秀</h2>
        @elseif($score >= 60)
            <h2>成绩:良好</h2>
        @else
            <h2>成绩:一般</h2>
        @endif
    @endisset
    </body>
    </html>
    
  4. 拆分路由文件

    # 可以通过以下方式拆分路由文件、防止路由文件过大
    # 修改app/Http/Kernel.php
    <?php
    class Kernel extends HttpKernel
    {
        //改写以下代码片段
        protected $middlewareGroups = [
            'user' => [
                //此处为新增,从web而来...
            ],
    
            'web' => [
                //框架默认...
            ],
    
            'api' => [
                //框架默认...
            ],
        ];
    }
    ?>
    
    # 修改app/Providers/RouteServiceProvider.php
    <?php
    class RouteServiceProvider extends ServiceProvider
    {
        public function boot(): void
        {
            $this->routes(function () {
                Route::middleware('api')
                    ->prefix('api')
                    ->group(base_path('routes/api.php'));
    
                Route::middleware('web')
                    ->group(base_path('routes/web.php'));
    
                //此处为新增↓,从web而来...
                Route::middleware('user')
                    ->group(base_path('routes/user.php'));
            });
        }
    }
    ?>
    

环境变量

  1. 创建及获取
    # .env可设置及修改环境变量
    # $param = env('PARAM', '默认值');
    

数据库

  1. 数据库配置文件

    # .env存储全局所有配置
    # config/database.php存储数据库相关配置
    # 可以通过修改database.php设置表前缀
    # 'prefix' => env('DB_PREFIX', ''),
    
  2. 数据库常用操作

    <?php
    //全表
    $users = DB::table('users')
        ->get();
    //多行
    $users = DB::table('users')
        ->where('id', '>', 0)
        ->limit(10)
        ->offset(0)
        ->get();
    //多行多列
    $users = DB::table('users')
        ->select('name', 'username')
        ->where('id', '>', 0)
        ->limit(10)
        ->offset(0)
        ->get();
    $users = DB::table('admin_users')
        ->pluck('name','username');
    //一行多列
    $user = DB::table('admin_users')
        ->where('id', '=', 1)
        ->first();
    //多行一列
    $names = DB::table('admin_users')
        ->pluck('name');
    //一行一列
    $name = DB::table('admin_users')
        ->where('id', '=', 1)
        ->value('name');
    //分组(DB::raw('原生SQL'))
    $groups = DB::table('admin_users')
        ->select('created_at', DB::raw('count(*) as total'))
        ->where('id', '>', '0')
        ->groupBy('created_at')
        ->orderBy('total')
        ->having('total', '>', 0)
        ->get();
    
    //增删改查
    // 插入
    DB::insert('INSERT INTO users (name, username) VALUES (?, ?)', ['张三', 'ZhangSan']);
    $id = DB::table('users')->insertGetId(['name' => '张三', 'username' => 'ZhangSan']);
    
    // 删除
    DB::delete('DELETE FROM users WHERE id = ?', [1]);
    
    // 更新
    DB::update('UPDATE users SET name = ? WHERE id = ?', ['张三', 1]);
    
    // 查询
    $user = DB::select('SELECT * FROM users WHERE id = ?', [1]);
    
    //事务处理
    DB::transaction(function () {
        DB::update('UPDATE users SET name = ? WHERE id = ?', ['张三', 1]);
        DB::delete('DELETE FROM users WHERE id = ?', [1]);
    });
    
    //死锁处理
    DB::transaction(function () {
        DB::update('UPDATE users SET name = ? WHERE id = ?', ['张三', 1]);
        DB::delete('DELETE FROM users WHERE id = ?', [1]);
    }, 5);
    
    //连表查询
    $posts = DB::table('orders')
        ->join('users', 'orders.user_id', '=', 'users.id')
        ->select('orders.*', 'users.name', 'users.username')
        ->get();
    

RESTful API

  1. 设计规范
    GET      /users           # 获取用户列表
    GET      /users/{id}      # 获取单个用户
    POST     /users           # 创建新的用户
    PUT      /users/{id}      # 更新用户信息(
    PATCH    /users/{id}      # 更新用户信息(部分)
    DELETE   /users/{id}      # 删除既有用户
    
Copyright © 鲸小鱼 2012-∞ all right reserved,powered by Gitbook修订: 2025-08-27 11:36

results matching ""

    No results matching ""