gpt4 book ai didi

php - 对于 Doctrine,使用 DQL 而不是 SQL 有什么好处?

转载 作者:可可西里 更新时间:2023-11-01 13:19:48 25 4
gpt4 key购买 nike

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

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

我错过/忽视了什么?我敢肯定这是有原因的,但我想听听有意大量使用它的人的意见,以及尝试使用普通 ole SQL 的好处是什么。

我不是在寻找支持 ORM 的论据,只是在需要在传统的 LAMP 设置(使用 mysql、postgres 等...)中执行核心“按关系获取”类型需求之外的事情时使用 DQL

最佳答案

老实说,我是使用 Doctrine1.2 学习 SQL 的:) 我什至不知道外键、级联操作、像 group_concat 这样的复杂函数以及许多其他东西。索引搜索也是非常好用且方便的东西,开箱即用。

DQL 编写和理解代码要简单得多。例如,这个查询:

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

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

如果将来您将关系从一对多更改为多对多,则同样的查询将在没有任何更改的情况下工作。 Doctrine 会解决这个问题。如果您使用 SQL 执行此操作,则必须更改所有查询以包含该中间多对多表。

关于php - 对于 Doctrine,使用 DQL 而不是 SQL 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com