Magento:检查是否定义了_数据?

Magento:检查是否定义了_数据?,magento,Magento,这是我的代码: $collection = Mage::getModel('orderhandling/paymentmapper')->getCollection(); $payments = $collection->addFieldToFilter('id', $id); 有时,如果未定义id,则未定义$payments中的\u数据数组。如何检查它是否未定义?我尝试了isset,但不管数组是否定义,它总是错误的 谢谢 您是否尝试过清空($payments)。因为id集合为空,

这是我的代码:

$collection = Mage::getModel('orderhandling/paymentmapper')->getCollection();
$payments = $collection->addFieldToFilter('id', $id);
有时,如果未定义id,则未定义
$payments
中的\u数据数组。如何检查它是否未定义?我尝试了isset,但不管数组是否定义,它总是错误的

谢谢

您是否尝试过
清空($payments)
。因为id集合为空,所以它返回空对象。您还可以使用getData进行检查,如

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

如果未定义$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()

来验证您的收藏的大小。您可以在调用$payments之前检查一下$id是否没有定义吗?不,我不能,只能在之后