orm php 实现
ORM(对象关系映射)在PHP中的实现
在PHP中,ORM用于将数据库表映射到对象,简化数据库操作。以下是几种常见的实现方式:
使用Eloquent ORM(Laravel框架)
Eloquent是Laravel内置的ORM工具,提供简洁的语法操作数据库。
定义模型:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'users';
}
基本操作:
// 查询
$users = User::where('active', 1)->orderBy('name')->get();
// 插入
$user = new User;
$user->name = 'John';
$user->save();
// 更新
$user = User::find(1);
$user->name = 'John Doe';
$user->save();
// 删除
User::destroy(1);
使用Doctrine ORM
Doctrine是PHP中功能强大的独立ORM库。
安装:
composer require doctrine/orm
配置实体:
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;
/
* @ORM\Column(type="string")
*/
private $name;
}
基本操作:
$entityManager->persist($user);
$entityManager->flush();
$user = $entityManager->find('User', 1);
$entityManager->remove($user);
$entityManager->flush();
使用Propel ORM
Propel是另一个流行的PHP ORM解决方案。
定义schema:
<table name="user">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
<column name="name" type="varchar" size="255"/>
</table>
基本操作:
$user = new User();
$user->setName('John');
$user->save();
$user = UserQuery::create()->findPk(1);
$user->delete();
自定义简单ORM实现
对于小型项目,可以创建简单的ORM封装:
class SimpleORM {
protected $table;
protected $db;
public function __construct($table) {
$this->table = $table;
$this->db = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
}
public function find($id) {
$stmt = $this->db->prepare("SELECT * FROM {$this->table} WHERE id = ?");
$stmt->execute([$id]);
return $stmt->fetch(PDO::FETCH_OBJ);
}
public function save($data) {
// 实现插入或更新逻辑
}
}
性能优化建议
批量操作代替循环单条操作 合理使用延迟加载和预加载 缓存常用查询结果 优化数据库索引
选择ORM解决方案时,应考虑项目规模、团队熟悉度和性能需求。框架内置ORM如Eloquent适合Laravel项目,而Doctrine更适合需要高度灵活性的复杂应用。







