Laravel开发相关笔记
作者QQ:67065435 QQ群:669756510
本站内容全部为作者原创,转载请注明出处!
三方开发相关的笔记
参考链接
安装
获取Laravel安装器
# 仅PHP8单版本 composer global require laravel/installer # PHP多版本 /path/to/php8 /path/to/composer8 global require laravel/installer获取Laravel代码
# 安装器获取最新版 laravel new [项目名] # composer获取最新版本 composer create-project --prefer-dist laravel/laravel [项目名] # composer获取指定版本 composer create-project --prefer-dist laravel/laravel=10.* [项目名]
目录结构
常用目录及文件
# 路由目录、文件 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
路由、控制器、视图、模型
路由(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']);控制器(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]); } }视图
<!--如果视图文件存在目录中,则以'目录/文件'方式调用视图文件--> <!--{!!$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>拆分路由文件
# 可以通过以下方式拆分路由文件、防止路由文件过大 # 修改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')); }); } } ?>
环境变量
- 创建及获取
# .env可设置及修改环境变量 # $param = env('PARAM', '默认值');
数据库
数据库配置文件
# .env存储全局所有配置 # config/database.php存储数据库相关配置 # 可以通过修改database.php设置表前缀 # 'prefix' => env('DB_PREFIX', ''),数据库常用操作
<?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
- 设计规范
GET /users # 获取用户列表 GET /users/{id} # 获取单个用户 POST /users # 创建新的用户 PUT /users/{id} # 更新用户信息( PATCH /users/{id} # 更新用户信息(部分) DELETE /users/{id} # 删除既有用户