Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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
Magento SQL查询:获取所有简单的产品;“单独不可见”;_Sql_Magento_Magento 1.7_Entity Attribute Value - Fatal编程技术网

Magento SQL查询:获取所有简单的产品;“单独不可见”;

Magento SQL查询:获取所有简单的产品;“单独不可见”;,sql,magento,magento-1.7,entity-attribute-value,Sql,Magento,Magento 1.7,Entity Attribute Value,我希望直接在Magento数据库上编写一个SQL查询,以获取所有具有可见性属性“单独不可见”的简单产品,我相信该属性的值为1 有人能帮忙吗?到目前为止,我发现可见性值是在表中设置的 目录\产品\实体\内部 但一直无法取得进一步进展。谢谢我希望这可能不会被测试 $sql = "SELECT * FROM catalog_product_entity_int WHERE visibility=1"; $connection = Mage::getSingleton('core/resource')-

我希望直接在Magento数据库上编写一个SQL查询,以获取所有具有可见性属性“单独不可见”的简单产品,我相信该属性的值为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'];
}

我希望这可能不会被测试

$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'];
}
在没有ORM的情况下不这样做有很多原因,所有这些都可能(也可能不)适用于您的需要(存储筛选器、从正确的表中读取数据等)。至少,您可以使用product collection对象构建要运行的查询:

$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')
在没有ORM的情况下不这样做有很多原因,所有这些都可能(也可能不)适用于您的需要(存储筛选器、从正确的表中读取数据等)。至少,您可以使用product collection对象构建要运行的查询:

$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')

我建议您直接在数据库上使用product collection for thisWhy sql?我建议您直接在数据库上使用product collection for thisWhy sql?感谢您的回答,不幸的是,表结构比这更隐蔽,但我将尝试调整sql。感谢再次建议使用product collection,而不是编写自定义查询。这在Magento中也是不好的做法谢谢你的回答,不幸的是,表结构比这更隐蔽,但我将尝试调整SQL。感谢再次建议使用product collection,而不是编写自定义查询。这也是magento的坏习惯