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”。你是对的,谢谢。我对答案进行了编辑,以反映这一点。