当前位置:首页 > PHP

php 实现orm

2026-02-28 06:21:24PHP

PHP 实现 ORM 的方法

ORM(Object-Relational Mapping)是将数据库表映射为对象的技术,简化数据库操作。以下是几种 PHP 实现 ORM 的方式:

使用现有 ORM 框架

  1. Eloquent(Laravel 内置 ORM)
    Eloquent 是 Laravel 默认的 ORM,提供简洁的语法操作数据库。

    // 定义模型
    namespace App\Models;
    use Illuminate\Database\Eloquent\Model;
    class User extends Model {
        protected $table = 'users';
    }
    
    // 查询数据
    $users = User::where('active', 1)->get();
  2. Doctrine
    Doctrine 是一个功能强大的 ORM,支持 DQL(Doctrine Query Language)和复杂的关联关系。

    // 定义实体
    namespace App\Entity;
    use Doctrine\ORM\Mapping as ORM;
    #[ORM\Entity]
    #[ORM\Table(name: 'users')]
    class User {
        #[ORM\Id]
        #[ORM\GeneratedValue]
        #[ORM\Column(type: 'integer')]
        private $id;
    }
    
    // 查询数据
    $users = $entityManager->getRepository(User::class)->findBy(['active' => 1]);
  3. Propel
    Propel 是另一个流行的 ORM,支持代码生成和 ActiveRecord 模式。

    // 查询数据
    $users = UserQuery::create()->filterByActive(1)->find();

自定义简易 ORM

  1. 基础 ActiveRecord 实现
    通过继承基类实现简单的 ORM 功能。

    class Model {
        protected static $table;
        protected $attributes = [];
    
        public static function find($id) {
            $table = static::$table;
            $query = "SELECT * FROM {$table} WHERE id = ?";
            $result = DB::query($query, [$id]);
            return new static($result);
        }
    }
    
    class User extends Model {
        protected static $table = 'users';
    }
    
    $user = User::find(1);
  2. 使用 PDO 封装
    结合 PDO 实现简单的数据映射。

    class ORM {
        private $pdo;
        private $table;
    
        public function __construct($table) {
            $this->pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
            $this->table = $table;
        }
    
        public function where($conditions) {
            $where = implode(' AND ', array_map(fn($k) => "$k = ?", array_keys($conditions)));
            $stmt = $this->pdo->prepare("SELECT * FROM {$this->table} WHERE {$where}");
            $stmt->execute(array_values($conditions));
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
    }
    
    $userORM = new ORM('users');
    $users = $userORM->where(['active' => 1]);

性能优化建议

  1. 延迟加载
    关联数据仅在需要时加载,减少不必要的查询。

  2. 缓存查询结果
    对频繁访问的数据使用缓存(如 Redis)。

  3. 批量操作
    使用批量插入或更新减少数据库交互次数。

    php 实现orm

    User::insert([['name' => 'A'], ['name' => 'B']]);

以上方法可根据项目需求选择,现有框架适合快速开发,自定义 ORM 更适合特定场景优化。

标签: phporm
分享给朋友:

相关文章

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

无限分类实现 php

无限分类实现 php

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

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…