Magento:检查是否定义了_data?

时间:2014-05-13 12:31:52

标签: magento

这是我的代码:

$collection = Mage::getModel('orderhandling/paymentmapper')->getCollection();
$payments = $collection->addFieldToFilter('id', $id);

有时,如果未定义 id ,则$payments中的 _data 数组未定义。如何检查是否未定义?我试过了isset,但无论是否定义了数组,这都是假的。

谢谢!

2 个答案:

答案 0 :(得分:1)

您是否尝试过empty($payments)。因为id集合是空的,所以它返回空对象。您也可以使用getData查看

if (!$payments->getData() || empty($payments->getData())) {
     // do things
}

答案 1 :(得分:1)

如果未定义$ id,则您的集合将为空,因为magento会将addFieldToFilter的第二个参数转换为字符串。

例如:

$collection = Mage::getModel('catalog/product')->getCollection()->addFieldToFilter('entity_id', $id);
echo (string) $collection->getSelect();

输出:

SELECT 1 AS `status`, `e`.`entity_id`, `e`.`type_id`, `e`.`attribute_set_id` FROM `catalog_product_flat_1` AS `e` WHERE (e.entity_id = '')

当然不会匹配任何东西。

您可以致电$collection->getSize()来验证收藏品的尺寸。