Prestashop 在模块内执行Dbal查询的存储库

Prestashop 在模块内执行Dbal查询的存储库,prestashop,prestashop-1.7,Prestashop,Prestashop 1.7,我的目标是能够从PS1.7.4.2模块内部执行SQL查询。文档鼓励使用Dbal服务 从: 即使使用旧方法检索数据仍然有效 (Product::getProducts或通过webservice),我们希望 在这里介绍一个最佳实践:使用存储库并了解 对象模型。这有很多优点,你依赖数据库 而不是模型,你将有更好的性能和控制上 你的数据 如果我把repository类放在src/Prestashop/Entity/repository中,我认为这不符合PS的理念。那么把repository类放在哪里呢

我的目标是能够从PS1.7.4.2模块内部执行SQL查询。文档鼓励使用Dbal服务

从:

即使使用旧方法检索数据仍然有效 (Product::getProducts或通过webservice),我们希望 在这里介绍一个最佳实践:使用存储库并了解 对象模型。这有很多优点,你依赖数据库 而不是模型,你将有更好的性能和控制上 你的数据


如果我把repository类放在
src/Prestashop/Entity/repository
中,我认为这不符合PS的理念。那么把repository类放在哪里呢

通过在模块内部执行
composer init
并将模块中的
src
映射到
Foo
命名空间,问题得以解决

然后在模块文件中,您可以从容器访问服务,即条令服务


您还可以将自己的存储库类定义为服务,并从容器中获取它们。

首先,1.7.5.4版仍然不存在。如果要在模块中使用DB对象,则无需在
/src
@Rolige中添加任何自定义文件。我的错,我改正了。谢谢你的回答。我同意我可以在模块内使用DB对象,但我需要使用docs DBAL,因为它是文档推荐的。有点像移动的Symfony。我是不是遗漏了什么?你是不是想在后台办公室的一些新的现代页面上呈现一些东西?@Rolige,是的。我试图在ProductBackOffice页面中添加一个额外的字段,但在此之前,我想通过在ps_产品中添加一列来更新数据库模式。一个有效的解决方案是使用
Db::getInstance()->Execute($sql)
来解决后面的问题。我只想使用文档中提供的解决方案(IMHO没有很好地解释),因为您的方式是错误的,首先,您永远不应该修改基表的结构,因为您正在扼杀未来的升级。如果要在产品中添加一个额外字段,则需要使用自己的附加表来完成此操作。因此,将存储库类放在何处?:)