当前位置: 首页 > 知识库问答 >
问题:

仅在安装模块时在现有Prestashop数据库中添加字段

杭英杰
2023-03-14

我会在Prestashop数据库的customers表中添加一个字段,但只有在安装模块时才添加。

我在我的模块定义中做到了:

public function install()
{
    Db::getInstance()->execute('ALTER TABLE '. _DB_PREFIX_.'_customer ADD id_field VARCHAR(60) DEFAULT NULL');

    return parent::install();
}

public function uninstall()
{
    Db::getInstance()->execute('ALTER TABLE '. _DB_PREFIX_.'_customer DROM COLUMN id_field');

    return parent::uninstall();
}

现在,我看到我们可以重写一个类,但在我的模块文件夹中找不到如何重写它。例如,我会在Customers类中添加新字段,以便能够在我的模块中管理它。

我该怎么办?

共有1个答案

钱振
2023-03-14

在模块文件夹中添加override/classes/Customer。php中包含以下代码:

<?php
class Customer extends CustomerCore
{
    // the method etc. i. e.:
    public function __construct($id = null)
    {
        parent::__construct($id);

        if (Module::isInstalled('yourmodule') && Module::isEnabled('yourmodule'))
        {
             // your code
        }
    }
}

重置模块。

 类似资料:
  • 我正在Prestashop 1.7中创建一个模块。6在“我的类别管理”页面中添加一些自定义字段。以下是我的代码(来源于法语,使用了新的Symfony型号): 模块/类别自定义字段/categorycustomfields.php 在updateData()方法中,我获得了带有category ID和lang ID的自定义字段,并使用Db Class方法insert()更新数据库中的颜色字段(颜色字

  • 我试图在用户ID下添加新的用户数据,但它将旧数据替换为新数据,并添加另一个“users”和“user\u account\u settings”。 这是我的实时数据库:在此处输入图像描述 我的实时数据库必须是这样的:添加新的用户数据而不将旧数据替换为新数据,也不添加“用户”和“user_account_settings”。 这就是我想要的数据库结构示例:在此处输入图像描述 这是用于添加新用户的代码

  • 我们即将从java8迁移到java9,在我们的代码中我们使用的是soap,因此我需要告诉eclipse使用java.xml进行编译。ws模块。 在第一步中,我不想模块化项目(即添加module-info.java)。相反,我想将每个依赖项保留在未命名的模块中,因此我需要另一种方法将java.xml.ws模块添加到eclipse java编译器中(希望通过使用--add模块=java.xml.ws但

  • 我在Laravel4.2项目中工作,现在我想在现有的表用户中添加列。现在我想添加另一列,当我运行migration命令时,我总是收到相同的消息“无需迁移”下面是我的迁移模式代码 我在终点站跑步 我还运行以下命令 但是当我运行上面的命令时,我收到以下错误 SQLSTATE[42S01]:基表或视图已经存在: 1050表'用户'已经存在

  • 我在生产中有一个基于Hibernate的应用程序,有一个大型数据库。我需要在这个应用程序中向两个实体(两个表)添加审计,我决定使用Envers。 对于每次插入、更新或删除,Envers都会向实体的审核表中添加一条新记录。 如果从应用程序一开始就支持Envers,那么审计表将在实体创建(INSERT)时填充。 Envers留档非常薄,没有提到任何关于将Envers添加到现有应用程序的内容。 如果我简