当前位置:首页 > PHP

php orm 实现

2026-02-14 12:36:35PHP

PHP ORM 实现方法

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

使用现成的ORM框架

Laravel Eloquent
Eloquent是Laravel框架内置的ORM,支持链式查询、模型关联等特性。

// 定义模型
class User extends \Illuminate\Database\Eloquent\Model {}
// 查询
$users = User::where('active', 1)->orderBy('name')->get();

Doctrine
Doctrine是独立的PHP ORM,支持复杂查询和数据库抽象层。

// 定义实体
/ @Entity */
class User {
    / @Id @GeneratedValue @Column(type="integer") */
    private $id;
    / @Column(type="string") */
    private $name;
}
// 查询
$users = $entityManager->getRepository(User::class)->findAll();

自定义简单ORM实现

基础映射
通过封装PDO实现简单的ORM功能。

php orm 实现

class Model {
    protected static $table;
    protected $attributes = [];

    public static function find($id) {
        $table = static::$table;
        $stmt = DB::prepare("SELECT * FROM {$table} WHERE id = ?");
        $stmt->execute([$id]);
        return $stmt->fetchObject(static::class);
    }
}

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

查询构建器
实现链式查询方法。

class QueryBuilder {
    private $table;
    private $conditions = [];

    public function where($column, $value) {
        $this->conditions[] = "{$column} = '{$value}'";
        return $this;
    }

    public function get() {
        $where = $this->conditions ? 'WHERE ' . implode(' AND ', $this->conditions) : '';
        $sql = "SELECT * FROM {$this->table} {$where}";
        return DB::query($sql)->fetchAll();
    }
}

高级特性实现

关联关系
实现一对一、一对多等关联。

php orm 实现

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

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

事件钩子
添加模型生命周期事件。

class Model {
    protected static function boot() {
        static::saving(function($model) {
            $model->beforeSave();
        });
    }

    protected function beforeSave() {
        // 保存前逻辑
    }
}

性能优化

延迟加载
实现关联数据的按需加载。

class Relation {
    private $loaded = false;
    private $results;

    public function get() {
        if (!$this->loaded) {
            $this->results = $this->query();
            $this->loaded = true;
        }
        return $this->results;
    }
}

缓存查询
缓存常用查询结果。

class CachedModel extends Model {
    public static function find($id) {
        $key = "model_{$id}";
        if ($cached = Cache::get($key)) {
            return $cached;
        }
        $model = parent::find($id);
        Cache::set($key, $model);
        return $model;
    }
}

选择现成ORM框架可以快速获得完善功能,自定义实现则更适合特定需求或学习目的。根据项目规模和要求选择合适的方案。

标签: phporm
分享给朋友:

相关文章

php实现文件下载

php实现文件下载

PHP 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (f…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…