所有分类
  • 所有分类
  • 后端开发
震惊!用了这个框架,再也不用记复杂的 SQL 语句了

震惊!用了这个框架,再也不用记复杂的 SQL 语句了

最佳实践包括命名一致性、适当映射、注释、避免硬编码、利用查询生成器和监视数据库架构更改。对象关系映射与数据库抽象层:对象-关系映射最佳实践对象之间的转换称为对象-关系映射(ORM)。框架可简化此过程,并提供附加功能,例如查询构造和对象关系管

我想说说我怎么看PHP对象关系映射(ORM),还有用DoctrineORM这个框架的实践经验。ORM就是让你能像打游戏那样,用面向对象方式玩转数据库,而不用搞那些SQL语句。这样写代码简单明了,方便维护,还能省去很多麻烦。

理解ORM的基本概念

震惊!用了这个框架,再也不用记复杂的 SQL 语句了

首先,说说什么是ORM?其实就是Object-RelationalMapping(对象-关系映射),顾名思义,就是把对象和数据库里的表格联系起来的方法。我们平时用PHP开发时,常用到的ORM框架就有DoctrineORM,用这个框架,你就不需要去记那些复杂的SQL语句了,直接操作对象就能搞定数据库的各种操作!

重视命名一致性

用ORM的话,名字一定要一样!比如我们数据库里有个表格叫”users”,那PHP里也要有个类名叫”Users”;还有,咱们数据中的”user_id”必须要有PHP类中的属性”$userId”匹配,这样程序才能顺利运行!而且这样做还能让代码更易读、更好维护。

适当映射数据库结构到PHP对象

让咱们来讲讲ORM,这就是你把数据库结构“映射”成PHP对象的魔法过程。咱们得保证每个数据库表格都有一个对应的PHP类,表格里的每一项就相当于PHP类里面的一个属性。这么搞的话,代码看上去一目了然,而且如果数据库结构变了,也不用费劲去改那些SQL语句,直接改改PHP类就行!

使用注释来提高代码的可读性

记住,注释可是代码里头的重头戏,特别是用ORM的时候!你可以给PHP类和属性加个注释,直接告诉人家他们跟哪张表、哪个字段扯上了关系。这样的话,别人拿到你的代码就能立马明白它咋运作的,不用再费劲地琢磨数据库结构啥的。

composer require doctrine/orm

避免硬编码,使用查询生成器

硬编码就是把SQL直接写进代码里,这种做法虽然方便,但坏处也不少,比如代码难修改,还有可能带来安全隐患。所以,用ORM的时候就别硬编码了,而是要用查询生成器来解决问题。它能帮你写复杂的查询语句,轻松又明了地搞定问题!

监视数据库架构更改

老是要改动数据库结构,特别是项目进行时。得有招儿跟上这节奏,及时调整ORM映射。要确保我们的代码和数据库步调一样,别让架构不同闹出乱子。

实战案例:使用DoctrineORM连接MySQL数据库

use DoctrineORMEntityManager;
use DoctrineORMToolsSetup;
use DoctrineORMConfiguration;
// 创建一个 Entity Manager
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration([__DIR__ . '/src'], $isDevMode);
$conn = array(
    'driver' => 'pdo_mysql',
    'user' => 'root',
    'password' => 'password',
    'dbname' => 'database_name',
);
$em = EntityManager::create($conn, $config);

下面我给大家举个实例,告诉你怎么用DoctrineORM连接MySQL库和查数据。首先得装个DoctrineORM,按部就班配置下数据库连接,然后利用查询生成器搞定查询。可能刚开始有点复杂,但弄明白了之后,以后处理数据库的事儿可就简单很多。

总结与提问

这个�子跟大家聊聊PHP里的对象关系映射(ORM)还有用DoctrineORM时的一些小技巧。它能帮咱们把开发速度提升好几倍,还能让程序代码看起来更干净,也好修。希望这些对你们有点帮助。最后,有个问题请教下各位:大家在用ORM时有没有碰到过啥问题?又是怎么解决的?欢迎到评论区说说看,也别忘了点个赞或者转发这篇文章,让更多的朋友们知道ORM的妙处。

$qb = $em->createQueryBuilder();
$qb->select('p.id', 'p.name')
    ->from('Product', 'p');
$query = $qb->getQuery();
$results = $query->getResult();
foreach ($results as $result) {
    echo $result['name'] . PHP_EOL;
}

原文链接:https://www.icz.com/technicalinformation/web/2024/06/17145.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?