CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
PHP 进阶/课时/数据库与 ORM
RawBlame
课时目录12 节

PHP 进阶

  1. 01PHP 进阶地图
  2. 02语法与数据结构
  3. 03Web 与超全局变量
  4. 04安全基础
  5. 05OOP 深入
  6. 06现代 PHP 工程
  7. 07数据库与 ORM
  8. 08性能与运维
  9. 09测试与静态分析
  10. 10框架生态
  11. 11集成与 CLI
  12. 12综合练习

数据库与 ORM

PDO、mysqli、ORM、迁移、事务。

35 分钟

数据库与 ORM

php-essentials 已用 PDO 连接 MySQL;本课扩展 ORM、迁移与事务。对照 Java JPA 见 spring-boot-essentials;路径 /roadmaps/php。

学习目标

  • 对比 PDO 与 mysqli 的使用场景
  • 用 Eloquent 或 Doctrine 做 ORM 映射
  • 理解迁移与事务保证数据一致性

PDO 事务

<?php
declare(strict_types=1);

$pdo->beginTransaction();
try {
    $pdo->prepare('INSERT INTO lessons (slug, title) VALUES (?, ?)')
        ->execute(['pha-database', '数据库与 ORM']);
    $pdo->prepare('UPDATE tracks SET lesson_count = lesson_count + 1 WHERE slug = ?')
        ->execute(['php-advanced-essentials']);
    $pdo->commit();
} catch (Throwable $e) {
    $pdo->rollBack();
    throw $e;
}

多表写入须在同一事务中;失败则回滚。

Eloquent 示例(Laravel)

use App\Models\Lesson;

$lesson = Lesson::create([
    'slug' => 'pha-database',
    'title' => '数据库与 ORM',
    'track_id' => 1,
]);

$found = Lesson::where('slug', 'pha-database')->first();

Eloquent 用 Active Record 模式;模型即表映射。

迁移

// database/migrations/2024_01_01_create_lessons_table.php
Schema::create('lessons', function (Blueprint $table) {
    $table->id();
    $table->string('slug')->unique();
    $table->string('title');
    $table->foreignId('track_id')->constrained();
    $table->timestamps();
});

迁移把表结构版本化,团队可重复部署;类似 Flyway / Liquibase。

mysqli 与 PDO

PDOmysqli
数据库多种仅 MySQL
预处理支持支持
推荐新项目首选遗留项目维护

练习

  • 写迁移创建 lessons 表(slug 唯一、含 timestamps)
  • 用 PDO 事务:插入课时并更新 track 计数
  • 用 Eloquent 或 Query Builder 实现按 track 分页查询

小结

PDO 打底、ORM 提效、迁移管结构、事务保一致。 下一课性能与运维。

加载本节练习…
← 上一课现代 PHP 工程下一课 →性能与运维