Magento 2 – Best Way to Check if a Custom Attribute Exists

attributescollection;custommagento2

In being careful, I want to check if my custom attribute exists before I attempt to utilize it in any way. I need to check against all attributes collection, not just the product collection. My attribute may exist on a customer, a product, or on a custom model of my own creation.

In magento 1.x, I'd use the following:

$attr = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter('specialty')->getFirstItem();

if ($attr->getAttributeId() > 0) {
 Do some stuff....'

I can't find anything that explicitly does something like this

Best Answer

You need use \Magento\Eav\Api\AttributeRepositoryInterface::get method for this.

For example:

try {

   $attribute = $this->attributeRepository->get($entityType, $attributeCode);

} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {

    //  attribute does not exist

}