Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql OpenCart:如何准确填充oc\u类别\u路径_Mysql_E Commerce_Opencart - Fatal编程技术网

Mysql OpenCart:如何准确填充oc\u类别\u路径

Mysql OpenCart:如何准确填充oc\u类别\u路径,mysql,e-commerce,opencart,Mysql,E Commerce,Opencart,我使用了一项在线服务,将数据从我的其他电子商务网站传输到我的网站,所有内容似乎都已正确传输 但是,产品类别存在一个问题。类别已转移到oc\u类别表中;但是,如果我希望能够在管理中编辑我的类别,则需要填充另一个名为oc\u category\u path的表 您知道这个表是什么,以及如何正确填充它(我想在我的情况下是手动填充的)。确切地说,path\u id和level是什么?什么决定了类别的级别 相关表格: CREATE TABLE `oc_category` ( `category_id`

我使用了一项在线服务,将数据从我的其他电子商务网站传输到我的网站,所有内容似乎都已正确传输

但是,产品类别存在一个问题。类别已转移到
oc\u类别
表中;但是,如果我希望能够在管理中编辑我的类别,则需要填充另一个名为
oc\u category\u path
的表

您知道这个表是什么,以及如何正确填充它(我想在我的情况下是手动填充的)。确切地说,
path\u id
level
是什么?什么决定了类别的级别

相关表格:

CREATE TABLE `oc_category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `image` varchar(255) DEFAULT NULL,
  `parent_id` int(11) NOT NULL DEFAULT '0',
  `top` tinyint(1) NOT NULL,
  `column` int(3) NOT NULL,
  `sort_order` int(3) NOT NULL DEFAULT '0',
  `status` tinyint(1) NOT NULL,
  `date_added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`category_id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

CREATE TABLE `oc_category_description` (
  `category_id` int(11) NOT NULL,
  `language_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `meta_description` varchar(255) NOT NULL,
  `meta_keyword` varchar(255) NOT NULL,
  `u_title` varchar(255) NOT NULL,
  `u_h1` varchar(255) NOT NULL,
  `u_h2` varchar(255) NOT NULL,
  PRIMARY KEY (`category_id`,`language_id`),
  KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

CREATE TABLE `oc_category_path` (
  `category_id` int(11) NOT NULL,
  `path_id` int(11) NOT NULL,
  `level` int(11) NOT NULL,
  PRIMARY KEY (`category_id`,`path_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

如果oc存储中的类别是根类别,则它会在路径表中获取一个条目,例如“category\u id,category\u id,0”。 如果该类别有子类别,它将在表中获得两个条目,即:-“类别id,类别id,1”以及“类别id,父类别id,0”

如果该子级有自己的子级,则该新子级将有三个条目:-
“类别id,类别id,2”
“类别id,父级id,1”
“类别id,父类别id,0”

为了说明这一点,假设一个类别的category_id为“14”。 它是类别id为“11”的类别的第一个子类别。 类别id为“11”的类别是类别id为“1”的类别上的子类别。(1>11>14,如管理面板中所示,除非使用名称而不是类别id)

上面将有3个条目:
“14”、“14”、“2”
“14”、“11”、“1”
“14”、“1”、“0”

因此,它的根类别将得到0,下一个类别将得到1,下一个类别将得到2,依此类推,所有这些都取决于它下面的类别级别

我希望能把事情解释清楚

至于填充它,最简单的方法,但不是一个完整的方法,就是创建一个带有“category\u id,category\u id,0”的表。这将使他们出现在管理面板。如果单击“修复”,它将正确生成此表

或者,您必须单步遍历category表,创建一个具有其父\u id的数组,在该父\u id中查找其父\u id并将其添加到数组中,等等。当数组完成时,即不再有父数组,只需将它们添加到具有正确“级别”的表中即可


仅供参考,还有另一个表也需要填充,category_to_store,这是非常简单的“category_id,store_id”。如果没有此表,您将无法在商店中看到您的分类。

谢谢您的回答,它帮助了我。但我相信有一个打字错误。在你的例子中,我认为“14”、“10”、“0”应该是“14”、“1”、“0”。你是对的,谢谢。我对答案进行了编辑,以反映这一点。