「個別には表示されない」という可視性属性を持つすべてのシンプルな製品を取得する SQL クエリを Magento データベースに直接書き込もうとしています。値は 1 です。
誰でもこれを手伝ってもらえますか?これまでのところ、可視性の値がテーブルに設定されていることを発見しました
catalog_product_entity_int
しかし、それ以上進むことができませんでした。ありがとう
「個別には表示されない」という可視性属性を持つすべてのシンプルな製品を取得する SQL クエリを Magento データベースに直接書き込もうとしています。値は 1 です。
誰でもこれを手伝ってもらえますか?これまでのところ、可視性の値がテーブルに設定されていることを発見しました
catalog_product_entity_int
しかし、それ以上進むことができませんでした。ありがとう
ORMなしでこれを行わない理由はたくさんありますが、そのすべてがニーズに当てはまる場合と当てはまらない場合があります(フィルターの保存、正しいテーブルからのデータの読み取りなど)。少なくとも、製品コレクションオブジェクトを使用して、実行するクエリを作成できます。
$coll = Mage::getModel('catalog/product')->getCollection();
$coll->addAttributeToFilter('visibility' , Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE);
echo $coll->getSelect();
結果のクエリは次のようになります。
SELECT `e`.*, IF(at_visibility.value_id > 0, at_visibility.value, at_visibility_default.value) AS `visibility`
FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_product_entity_int` AS `at_visibility_default`
ON (`at_visibility_default`.`entity_id` = `e`.`entity_id`)
AND (`at_visibility_default`.`attribute_id` = '526')
AND `at_visibility_default`.`store_id` = 0
LEFT JOIN `catalog_product_entity_int` AS `at_visibility` ON (`at_visibility`.`entity_id` = `e`.`entity_id`)
AND (`at_visibility`.`attribute_id` = '526')
AND (`at_visibility`.`store_id` = 1)
WHERE (IF(at_visibility.value_id > 0, at_visibility.value, at_visibility_default.value) = '1')
これがテストされていなくてもうまくいくことを願っています。
$sql = "SELECT * FROM catalog_product_entity_int WHERE visibility=1";
$connection = Mage::getSingleton('core/resource')->getConnection('core_read');
foreach ($connection->fetchAll($sql) as $arraytest) {
echo $arraytest['name'];
}