Magento: какой catalog_product_flat мне нужно выбрать? и что такое таблица catalog_product_entity_datetime? - PullRequest
0 голосов
/ 15 октября 2010

Чтобы узнать, кому из клиентов нужно было отправить уведомление, и узнать, какие продукты остаются за 2 часа до истечения срока действия сделки, мне нужно выбрать из списка пожеланий, wishlist_item, customer_entity и catalog_product_enity, которые необходимо объединить с catelog_product_flat_X.Есть много таблиц catelog_product_flat_X (X имеет от 1 до 64). Как узнать, к какой таблице нужно присоединиться?

Вот структура таблицы catalog_product_flat, в которой есть нужные мне поля "special_to_date" и "visibility"

CREATE TABLE `catalog_product_flat_1` (
`entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`attribute_set_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`type_id` varchar(32) NOT NULL DEFAULT 'simple',
`cost` decimal(12,4) DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`enable_googlecheckout` tinyint(1) DEFAULT NULL,
`has_options` smallint(6) NOT NULL DEFAULT '0',
`image_label` varchar(255) DEFAULT NULL,
`links_exist` int(11) DEFAULT NULL,
`links_purchased_separately` int(11) DEFAULT NULL,
`links_title` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`news_from_date` datetime DEFAULT NULL,
`news_to_date` datetime DEFAULT NULL,
`price` decimal(12,4) DEFAULT NULL,
`price_type` int(11) DEFAULT NULL,
`price_view` int(11) DEFAULT NULL,
`required_options` tinyint(3) unsigned NOT NULL DEFAULT '0',
`shipment_type` int(11) DEFAULT NULL,
`short_description` text,
`sku` varchar(64) DEFAULT NULL,
`sku_type` int(11) DEFAULT NULL,
`small_image` varchar(255) DEFAULT NULL,
`small_image_label` varchar(255) DEFAULT NULL,
`special_from_date` datetime DEFAULT NULL,
`special_price` decimal(12,4) DEFAULT NULL,
`special_to_date` datetime DEFAULT NULL,
`tax_class_id` int(11) DEFAULT NULL,
`thumbnail` varchar(255) DEFAULT NULL,
`thumbnail_label` varchar(255) DEFAULT NULL,
`updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`url_key` varchar(255) DEFAULT NULL,
`url_path` varchar(255) DEFAULT NULL,
`visibility` tinyint(3) unsigned DEFAULT NULL,
`weight` decimal(12,4) DEFAULT NULL,
`weight_type` int(11) DEFAULT NULL,
PRIMARY KEY (`entity_id`),
KEY `IDX_TYPE_ID` (`type_id`),
KEY `IDX_ATRRIBUTE_SET` (`attribute_set_id`),
KEY `IDX_NAME` (`name`),
KEY `IDX_PRICE` (`price`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Вот каталог catalog_product_entity, по которому я могу узнать идентификатор продукта (entity_id)

CREATE TABLE `catalog_product_entity` (
`entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`entity_type_id` smallint(8) unsigned NOT NULL DEFAULT '0',
`attribute_set_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`type_id` varchar(32) NOT NULL DEFAULT 'simple',
`sku` varchar(64) DEFAULT NULL,
`has_options` smallint(1) NOT NULL DEFAULT '0',
`required_options` tinyint(1) unsigned NOT NULL DEFAULT '0',
`created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`entity_id`),
KEY `FK_CATALOG_PRODUCT_ENTITY_ENTITY_TYPE` (`entity_type_id`),
KEY `FK_CATALOG_PRODUCT_ENTITY_ATTRIBUTE_SET_ID` (`attribute_set_id`),
KEY `sku` (`sku`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COMMENT='Product Entities';

и что такое таблица catalog_product_entity_datetime?Я вижу, что это также сохраняет то же значение для значения special_to_date в поле значения

CREATE TABLE `catalog_product_entity_datetime` (
`value_id` int(11) NOT NULL AUTO_INCREMENT,
`entity_type_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`attribute_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`store_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`entity_id` int(10) unsigned NOT NULL DEFAULT '0',
`value` datetime DEFAULT NULL,
PRIMARY KEY (`value_id`),
UNIQUE KEY `IDX_ATTRIBUTE_VALUE` (`entity_id`,`attribute_id`,`store_id`),
KEY `FK_CATALOG_PRODUCT_ENTITY_DATETIME_ATTRIBUTE` (`attribute_id`),
KEY `FK_CATALOG_PRODUCT_ENTITY_DATETIME_STORE` (`store_id`),
KEY `FK_CATALOG_PRODUCT_ENTITY_DATETIME_PRODUCT_ENTITY` (`entity_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11873 DEFAULT CHARSET=utf8;

Пожалуйста, помогите мне, как это сделать.

Спасибо заранее, Рити

Ответы [ 3 ]

2 голосов
/ 15 октября 2010

Для этого следует использовать методы каталога / продукта magento, а не необработанный SQL-запрос.поэтому начните с Mage :: getModel ('catalog / product') -> getCollection () и добавляйте объединения, пока не получите нужные данные;таблицы catalog_flat и любые другие таблицы предназначены только для внутреннего использования magento.Плоские таблицы создаются magento из соображений производительности схемы EAV.

1 голос
/ 30 марта 2011

Включение, это может помочь другим, поэтому я хотел написать несколько заметок.

Мне нужно вытащить cat # в cart , чтобы запустить событие bool.Плоские столы кажутся ненадежными ИМХО.Квартиры представлены для работы, и я не понимаю, как их использует Маг, и мне все равно.

Сложите, что с огромным радикальным изменением каждое обновление БД, шаблона, всего - становится страшно.

Итак, вот два вопроса, о которых стоит подумать.

# get basic product ID from the sku (via something like this : $_item->getSku() ) - returns ID = 122 in my case
select entity_id from `magento_store`.`catalog_product_entity` where sku = 'THE_SKU';

## Use that value to tie to the cat index as such:
SELECT * FROM `magento_store`.`catalog_category_product_index` where product_id = 122; # returns 61 and 62 in my case, the matching cat id #s in the admin.

Рассмотрим присоединение, конечно.

Так что в этом примере entity_id возвращает идентификатор продукта, а category_id - номер кошки.Используя 1.4.1 прямо сейчас.

Будьте очень осторожны, я обнаружил вредоносные ошибки в основной системе.Magento - плохой mojo.

Итак, затронем исходный вопрос - это запросы, подобные этим, где вы можете начать объединять свою собственную информацию для конкретных нужд в квартирах / кэше.К счастью таблицы помечены как помощь.Не легкая задача - не невозможная.Я рекомендую использовать кариозную MVC / подобную функциональность, когда это возможно.

Приветствия!

Обновление: Появляется плоский стол # - номер магазина (дух).Он должен соответствовать # в URI, например,

index.php/admin/catalog_product/index/store/2/

будет представлять собой таблицу flat2.

1 голос
/ 15 октября 2010

В структуре данных продуктов каталога Magento реализована модель Entity-Attribute-Value .Вам нужно прочитать EAV (ref Wikipedia ), а затем обратиться к диаграммам базы данных Magento .

...