当前位置: 首页 > 面试题库 >

使用Doctrine与SQL相比,使用DQL有什么好处?

朱浩大
2023-03-14
问题内容

当在使用Doctrine类时需要自定义查询时,有人可以为我提供一些明确的理由(支持事实)来使用/学习DQL与SQL吗?

我发现,如果无法使用ORM的内置关系功能来实现某些目标,通常会在扩展的Doctrine或DoctrineTable类中编写自定义方法。在这种方法中,用直接的SQL编写所需的代码(使用带有适当准备好的语句/注入保护等的PDO)。DQL似乎是学习/调试/维护的另一种语言,但似乎并没有提供足够的令人信服的理由,以便在大多数常见情况下使用。DQL似乎并没有比SQL复杂得多,因此可以保证使用它-
实际上,我怀疑您是否可以在没有扎实的SQL理解的情况下有效地使用DQL。与PHP一起使用的最常见的数据库中,大多数核心SQL语法端口都相当不错。

我想念/忽略什么?我确信这是有原因的,但是我想听听那些有意大量使用它的人的消息,以及尝试使用Plain-ole SQL的收获是什么。

我不是在寻找支持ORM的参数,只是在传统的LAMP设置(使用mysql,postgres等)中需要执行核心“按关系获取”类型需求时执行的DQL。


问题答案:

老实说,我使用Doctrine1.2学习了SQL
:)我什至不知道外键,级联操作,诸如group_concat之类的复杂功能以及许多其他东西。索引搜索也是开箱即用的非常好用的东西。

DQL更加容易编写和理解代码。例如,此查询:

$query = ..... // some query for Categories
   ->leftJoin("c.Products p")

它将在类别和产品之间进行左连接,而您不必在p.category_id = c.id上写。

而且,如果将来您将关系从一个2到许多更改为很多2,那么这个查询将可以工作,而无需进行任何更改。教义将对此予以照顾。如果要使用SQL进行此操作,则必须更改所有查询以包括该中间多2多次表。



 类似资料:
  • 问题内容: 每个案例都有不同的用例吗?什么时候应在makeStyles上使用withStyles? 问题答案: 所述钩API()只能与功能的部件使用。 的高次成分API()可与类组件或功能的部件使用。 它们都提供相同的功能,并没有在无差异的参数和。 如果您将其与功能组件一起使用,则建议您使用Hook API()。与(并在内部委托)相比,有一点额外的开销。 如果您要自定义Material- UI组件

  • Spring REST文档最近发布,文档中说: 这种方法将您从像Swagger这样的工具强加的限制中解放出来 所以,我想问一下,与Swagger相比,SpringREST文档什么时候更适合使用,以及它释放了哪些限制。

  • 问题内容: 在Symfony中,当我在mysql中将以下查询与DATE函数一起使用时,出现错误 为什么会这样以及解决该情况的解决方法是什么,在数据库中,这些字段(即end_date)存储为mysql类型“ date” 问题答案: 仅了解几个标准sql函数(例如)。为了能够使用您的自定义函数,您需要注册它并告诉如何将其转换为原始sql。请遵循以下指南: Symfony文档 学说 并在这里检查我的答案

  • 问题内容: 用…实现事情 似乎 已经 很简单 了… 与 ngResource相比 ,使用Restangular 有哪些优点/缺点? 1.1.3 将返回承诺,并且可以使用[最新的PRcommit来实现。将来会提供支持来支持Restangular所做的其他动词吗?如果发生这种情况,Restangular似乎将消失并变得不耐烦。 问题答案: 我是Restangular的创建者。 我已经在自述文件中创建了

  • 问题内容: 我的应用程序中有一些内存泄漏。它们都起源于一个特定的视图集群,我花了大量时间进行调整,并尝试减少尽可能多的上下文传递。这使我相信群集中使用的位图就是问题所在。因此,我考虑将WeakReferences用于所有对视图使用的位图的引用。我从未使用过WeakReference,并且不确定这是否是一个好的应用程序。任何机构都可以提供有用的指示或技巧吗? 问题答案: 因此,我考虑将WeakRef

  • 问题内容: 有没有办法在联接子句中访问联接实体的关系?我试图避免在子查询中使用子句。 编辑: 还是有一种方法可以联接子查询而不是使用? 即确保连接对象的值为1。 尝试避免此查询 重写尝试失败: 无法访问 订单实体: ServiceRequest实体: ServiceType实体: 问题答案: 您要在加入服务类型之前对其进行查询。尝试: