当前位置:首页 > PHP

php实现orm

2026-02-27 21:40:12PHP

PHP 实现 ORM 的方法

使用 PDO 扩展

PDO(PHP Data Objects)是 PHP 的一个轻量级数据库抽象层,可以用于实现简单的 ORM 功能。以下是一个基本的 PDO ORM 实现示例:

class Database {
    private $pdo;

    public function __construct($host, $dbname, $username, $password) {
        $this->pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
        $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function query($sql, $params = []) {
        $stmt = $this->pdo->prepare($sql);
        $stmt->execute($params);
        return $stmt;
    }

    public function fetch($sql, $params = []) {
        return $this->query($sql, $params)->fetch(PDO::FETCH_ASSOC);
    }

    public function fetchAll($sql, $params = []) {
        return $this->query($sql, $params)->fetchAll(PDO::FETCH_ASSOC);
    }
}

使用 Laravel Eloquent

Laravel 的 Eloquent ORM 是 PHP 中最流行的 ORM 解决方案之一。以下是 Eloquent 的基本用法:

// 定义模型
class User extends Illuminate\Database\Eloquent\Model {
    protected $table = 'users';
}

// 使用模型
$users = User::all(); // 获取所有用户
$user = User::find(1); // 获取 ID 为 1 的用户
$newUser = User::create(['name' => 'John', 'email' => 'john@example.com']); // 创建新用户

使用 Doctrine ORM

Doctrine 是另一个功能强大的 PHP ORM 工具。以下是 Doctrine 的基本配置和使用示例:

// 配置
$config = Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration([__DIR__], true);
$conn = ['driver' => 'pdo_mysql', 'user' => 'root', 'password' => '', 'dbname' => 'test'];
$entityManager = Doctrine\ORM\EntityManager::create($conn, $config);

// 定义实体
/
 * @Entity @Table(name="users")
 */
class User {
    / @Id @Column(type="integer") @GeneratedValue */
    protected $id;

    / @Column(type="string") */
    protected $name;

    // getters and setters
}

// 使用实体
$user = new User();
$user->setName('John');
$entityManager->persist($user);
$entityManager->flush();

实现简单的 ActiveRecord 模式

可以自己实现一个简单的 ActiveRecord 模式:

abstract class ActiveRecord {
    protected static $table;
    protected $attributes = [];

    public static function find($id) {
        $table = static::$table;
        $sql = "SELECT * FROM $table WHERE id = ?";
        $result = (new Database())->fetch($sql, [$id]);
        $model = new static();
        $model->attributes = $result;
        return $model;
    }

    public function save() {
        $table = static::$table;
        if (isset($this->attributes['id'])) {
            // update
        } else {
            // insert
        }
    }
}

class User extends ActiveRecord {
    protected static $table = 'users';
}

使用关系映射

实现基本的关联关系:

class Post extends Model {
    public function user() {
        return $this->belongsTo(User::class);
    }
}

class User extends Model {
    public function posts() {
        return $this->hasMany(Post::class);
    }
}

// 使用
$user = User::find(1);
$posts = $user->posts;

以上方法展示了从简单到复杂的 PHP ORM 实现方式,可以根据项目需求选择合适的方案。

php实现orm

标签: phporm
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ?…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中…