モジュール/モデル/SomeModel.php
public function loadByAttributes($attributes)
{
$this->setData($this->getResource()->loadByAttributes($attributes));
return $this;
}
モジュール/モデル/リソース/SomeModel.php:
public function loadByAttributes($attributes)
{
$adapter = $this->_getReadAdapter();
$where = array();
foreach ($attributes as $attributeCode=> $value) {
$where[] = sprintf('%s=:%s', $attributeCode, $attributeCode);
}
$select = $adapter->select()
->from($this->getMainTable())
->where(implode(' AND ', $where));
$binds = $attributes;
return $adapter->fetchRow($select, $binds);
}
最後に、次のモデルをロードできます。
$attributes = array('tag_name'=> 'any', 'custome_name'=> 'some','group_name'=>'some');
$model = Mage::getModel('module/somemodel')->loadByAttributes($attributes);
更新しました
ちなみに、このメソッド(loadByAttributes)は、コレクションではなく簡単に使用でき、より理解しやすいものです。また、Magentoはいくつかのイベントをディスパッチし、コレクションまたはエンティティをロードし、サードパーティの拡張機能はオブザーバーによってコレクションまたはエンティティを更新できます。(私のものとあなたの例で与えられた)リソースを介してエンティティをロードする場合、イベント/オブザーバは起動せず、コレクションよりも速く「クリーン」なエンティティを取得できます。また、Magentoはこの方法でキャッシュされたコレクションを使用せず、dbテーブルから直接ロードします。
たぶんそれが、Magentoコアモジュールでこのメソッドを使用する理由です。