コレクションについて言及しています
あなたのためのいくつかの参照:
- http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-5-magento-models-and-orm-basics
- http://alanstorm.com/magento_collections
- http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/using_collections_in_magento
- lib/varien/data/collection/db.php および lib/varien/data/collection.php
したがって、モジュールが正しく設定されていると仮定すると、コレクションを使用してモデル タイプの複数のオブジェクトを取得します。
この構文は次のとおりです。
$yourCollection = Mage::getModel('module/userdevice')->getCollection()
Magento は、開発者がコレクションで使用できるいくつかの優れた機能を提供しています。したがって、上記の例は非常に簡単に実現できます。
$yourCollection = Mage::getModel('module/userdevice')->getCollection()
->addFieldToFilter('user_id', 1)
->addFieldToFilter('device_id', 3);
返されたオブジェクトの数を取得できます。
$yourCollection->count() または単純に count($yourCollection)
編集
コメントで提起された質問に答えるには:「コレクションではなく、特定のオブジェクトだけが必要な場合」
これは、元の質問の両方の条件を満たす必要があるかどうか、またはロードするオブジェクトの ID を知っているかどうかによって異なります。
オブジェクトのIDがわかっている場合は、次のようにします。
Mage::getModel('module/userdevice')->load($objectId);
ただし、2 つの属性に基づいてロードしたい場合は、次のようにします。
user_id = 1
device_id = 3
その場合でもコレクションを使用しますが、単純に最初のオブジェクトを返します (1 つのオブジェクトのみが両方の条件を満たすことができると仮定します)。
再利用するには、このロジックをメソッドにラップして、モデルに配置します。
public function loadByUserDevice($userId, $deviceId)
{
$collection = $this->getResourceCollection()
->addFieldToFilter('user_id', $userId)
->addFieldToFilter('device_id', $deviceId)
->setCurPage(1)
->setPageSize(1)
;
foreach ($collection as $obj) {
return $obj;
}
return false;
}
これを次のように呼び出します。
$userId = 1;
$deviceId = 3;
Mage::getModel('module/userdevice')->loadByUserDevice($userId, $deviceId);
ノート:
loadByUserDevice を次のように短縮できますが、オブジェクトが見つからない場合、false の戻り値の利点は得られません。
public function loadByUserDevice($userId, $deviceId)
{
$collection = $this->getResourceCollection()
->addFieldToFilter('user_id', $userId)
->addFieldToFilter('device_id', $deviceId)
;
return $collection->getFirstItem();
}