如何在外部数据库中添加类别和产品?

时间:2015-08-19 10:47:19

标签: prestashop prestashop-1.6

我只是想知道如何从其他数据库添加或链接类别和产品。新数据库表字段与现有prestashop表最相同。任何帮助,提示或任何有用的文章?

2 个答案:

答案 0 :(得分:3)

如果通过"添加或链接" Prestashop的外部数据库你的意思是让Prestashop直接连接到外部数据库,我建议反对它,因为需要更改Prestashop核心文件,使其与Prestashop的未来升级不兼容,从而失去开源的一个主要优点

相反,我推荐的方法是外部数据库得到同步"进入Prestashop数据库。从外观数据库是否存在于另一个系统中并且您只是希望能够在prestashop中看到相同的类别和产品(在目录模式下)或者您想要停止使用连接的应用程序时,不清楚到外部数据库并开始使用Prestashop中的数据。

在第一个场景(实时外部数据库)中,最好的选择是编写一个脚本,将来自外部数据库的数据提供给Prestashop数据库。如果两个数据库都相似,则脚本应该非常简单。连接到两个数据库,查询外部数据库并使用任何所需的修改插入Prestashop数据库。该脚本可以由cron作业以所需频率执行(例如每天一次)。 Prestashop必须处于目录模式,因此不能下订单(两个系统都无法修改数据,或者最终会有两组不同的数据)。

在第二种情况下,外部数据库不再处于活动状态,最好的方法是将数据迁移到Prestashop数据库中。对于迁移,有两种方法:

1)将外部数据库导出为CSV文件,并使用Prestashop管理中默认包含的导入工具(高级参数 - >导入CSV)将其导入prestashop。此导入工具允许您将外部数据库中的字段分配到Prestashop数据库上的正确字段,并且它负责处理Prestashop中其他表的所有依赖关系。如果您不需要以任何方式转换外部数据,那么我会推荐这种方法。

2)创建一个读取外部数据库的脚本,执行可能需要的任何数据转换,然后将转换后的数据插入Prestashop数据库。这种方法更复杂,但如果需要,它可以灵活地转换数据。您必须了解Prestashop中的所有表依赖项才能保持正确的DB完整性。这是我在将我们的商店迁移到Prestashop时实施的方法,因为我们必须进行大量的数据转换,以充分利用Prestashop功能,如分层导航,产品比较等。

答案取决于我将数据迁移到Prestashop的实际体验。我希望它有所帮助。

答案 1 :(得分:2)

您可以使用prestashop站点中的脚本从外部数据库添加类别。为此创建一个带有前控制器的模块(用于cron作业或运行脚本),在脚本内部从外部数据库中选择类别,然后遍历类别并在循环内创建prestashop类别对象并将类别字段放置到类别对象并调用类别保存方法。

    public function initContent()
    {
        parent::initContent();
        $temp_categs = array(); //
        //fetch data into $temp_catgs from the external db with the help mysqli_connect or whatever the driver - never modify presta db settings - write php code for db connection to external db and fetch 

        //loop through the fetched categories
        foreach($temp_categs as $categ){
          $new_categ = new Category();

          //set all the field values
          $new_categ->name = $categ['name'];
          $new_categ->id_parent = $categ['id_parent'];
          $new_categ->active = true;
          $new_categ->field2 = $categ['field2'];
          $new_categ->field3 = $categ['field3'];

          //save the category - a category with new id will be created in prestashop
          $new_categ->save();
        }
    }
}