laravel 请求流程为 url → 路由 → 控制器 → 模型取数 → 视图展示;路由定义在 routes/web.php,支持参数、正则约束;视图用 blade 模板渲染并传参;模型按约定映射数据表,实现 crud 与关联查询。

刚上手 Laravel,别急着写业务逻辑,先理清请求怎么进来、数据怎么流转、页面怎么渲染——这三步全靠 MVC 架构 和 路由 搭起骨架。核心就一条:URL → 路由 → 控制器 → 模型取数 → 视图展示。
路由:请求进来的第一道门
所有 HTTP 请求都得先过路由这关。Laravel 的路由定义在 routes/web.php 里,最常用的是 Route::get() 和 Route::post()。
- 基础写法:比如
Route::get('/hello', function () { return 'Hello, World!'; });,访问/hello就直接返回字符串 - 绑定控制器方法:更规范的写法是交给控制器处理,例如
Route::get('/user/{id}', [UserController::class, 'show']); - 参数控制:花括号
{id}表示必填参数;加问号{id?}变成可选,并需在方法中设默认值,如function($id = 1) - 正则约束防乱入:用
->where('id', '[0-9]+')限定只接受数字 ID,避免非法路由匹配出错
视图:把数据变成用户看得懂的页面
视图文件放在 resources/views/ 下,用 Blade 模板语法(.blade.php 后缀),支持变量输出、条件判断、循环等。
- 简单渲染:控制器里写
return view('welcome');就能加载resources/views/welcome.blade.php - 传数据给视图:用数组或 with 方法,例如
return view('user.profile', ['name' => 'Tom', 'age' => 28]);,模板里直接写{{ $name }} - 布局复用:用
@extends('layouts.app')统一头部、导航和页脚,子页面只专注内容区,减少重复代码
模型与数据库交互:让数据活起来
模型(Model)对应数据库表,默认继承 Illuminate\Database\Eloquent\Model,负责查、增、改、删操作。
- 快速生成:运行
php artisan make:model Post,自动生成app/Models/Post.php - 约定优于配置:模型名
Post默认对应数据表posts(复数、小写),主键默认为id - 控制器中调用:比如在
UserController@show里写$user = User::findOrFail($id);,自动抛出 404 如果找不到 - 关联数据更省事:定义
public function posts() { return $this->hasMany(Post::class); },就能用$user->posts拿到所有文章
不复杂但容易忽略:路由定义要早于控制器调用,模型命名和表名对不上会查不到数据,视图路径写错会报 View [xxx] not found。按这个顺序搭一遍,MVC 就不是概念,而是你每天写的代码。











