Laravel9.x核心特性全解析

好的,以下是针对 Laravel 9.x 版本的一些核心概念和常见操作的解答,采用清晰的结构:

Laravel 9.x 核心特性与解答

Laravel 9 是一个重要的长期支持版本 (LTS),引入了多项改进和新功能。以下是一些关键方面:

1. 环境要求
  • PHP 版本:Laravel 9.x 要求 PHP >= 8.0
  • Composer:用于依赖管理。
2. 路由 (Routing)

Laravel 的路由系统是其核心。在 routes/web.phproutes/api.php 中定义路由。

php 复制代码
// 基本 GET 路由
Route::get('/welcome', function () {
    return view('welcome');
});

// 路由到控制器方法
Route::get('/users', [UserController::class, 'index']);

// 带参数的路由
Route::get('/user/{id}', [UserController::class, 'show']);

// 路由命名 (方便生成 URL 或重定向)
Route::get('/user/profile', [UserController::class, 'profile'])->name('profile');
3. 控制器 (Controllers)

控制器用于组织处理请求的逻辑。使用 Artisan 命令创建:

bash 复制代码
php artisan make:controller UserController

示例控制器方法:

php 复制代码
<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all(); // 获取所有用户
        return view('users.index', ['users' => $users]);
    }

    public function show($id)
    {
        $user = User::findOrFail($id); // 查找用户或失败返回 404
        return view('users.show', ['user' => $user]);
    }
}
4. Eloquent ORM (数据库模型)

Eloquent 是 Laravel 的活动记录 ORM。定义模型:

bash 复制代码
php artisan make:model User

模型文件 app/Models/User.php (Laravel 9 默认模型放在 Models 目录下):

php 复制代码
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    // 默认表名是模型名的复数形式 (users)
    // protected $table = 'my_users'; // 自定义表名

    // 定义可批量赋值的字段
    protected $fillable = ['name', 'email'];

    // 定义需要隐藏的字段 (例如密码)
    protected $hidden = ['password'];
}

查询示例:

php 复制代码
// 获取所有用户
$users = User::all();

// 根据主键查找
$user = User::find(1);

// 条件查询
$activeUsers = User::where('active', 1)->orderBy('name')->get();

// 保存新用户
$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->save();

// 更新用户
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();

// 删除用户
$user = User::find(1);
$user->delete();
5. 视图 (Blade Templates)

Blade 是 Laravel 的模板引擎。视图文件通常位于 resources/views 目录。

基本数据传递与显示 (users/index.blade.php):

php 复制代码
<html>
<body>
    <h1>Users</h1>
    <ul>
        @foreach ($users as $user)
            <li>{{ $user->name }} - {{ $user->email }}</li>
        @endforeach
    </ul>
</body>
</html>
6. 表单处理 & 验证

处理表单提交和验证数据。

php 复制代码
// 在控制器中处理 POST 请求
public function store(Request $request)
{
    // 验证请求数据
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => 'required|min:8',
    ]);

    // 验证通过,创建用户
    $user = User::create($validated);

    // 重定向到用户列表页
    return redirect()->route('users.index');
}
7. 依赖注入

Laravel 的服务容器自动解析依赖。例如在控制器构造函数或方法中注入 Request 或自定义服务。

php 复制代码
public function store(Request $request, UserService $userService)
{
    // 使用 $request 获取输入
    // 使用 $userService 处理业务逻辑
}
8. 数据库迁移 (Migrations)

迁移用于定义和修改数据库结构。创建迁移:

bash 复制代码
php artisan make:migration create_users_table

编辑迁移文件 (database/migrations/xxxx_create_users_table.php):

php 复制代码
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id(); // 主键 ID
        $table->string('name'); // VARCHAR 类型
        $table->string('email')->unique(); // 唯一索引
        $table->string('password');
        $table->timestamps(); // 创建 created_at 和 updated_at 时间戳
    });
}

public function down()
{
    Schema::dropIfExists('users');
}

运行迁移:

bash 复制代码
php artisan migrate

回滚迁移:

bash 复制代码
php artisan migrate:rollback
9. Artisan 命令行工具

Artisan 是 Laravel 的命令行接口,用于执行各种任务。

  • php artisan list:查看所有可用命令。
  • php artisan make:model ModelName -m:创建模型并同时生成迁移文件 (-m)。
  • php artisan make:controller PhotoController --resource:创建资源控制器。
  • php artisan tinker:进入交互式 REPL 环境,用于测试 Eloquent 查询等。

总结

Laravel 9.x 提供了强大的功能集用于构建现代 Web 应用程序。以上涵盖了路由、控制器、模型 (Eloquent)、视图 (Blade)、表单验证、依赖注入、数据库迁移和 Artisan 命令行等核心方面。具体开发时,请务必参考 Laravel 9.x 官方文档 以获取最准确和详细的信息。

相关推荐
阿巴斯甜1 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker2 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95273 小时前
Andorid Google 登录接入文档
android
黄林晴4 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab16 小时前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿19 小时前
Android MediaPlayer 笔记
android
Jony_20 小时前
Android 启动优化方案
android
阿巴斯甜20 小时前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇20 小时前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android