モデルの別のフィールドでモデルのレコードを取得することはできますか?
通常の方法
$model = Mage::getModel('foo_bar/baz');
$model->load($id);
// do something with the loaded record
しかし、私はこのようなものが必要です
$model = Mage::getModel('foo_bar/baz');
$model->loadByAnotherFieldOfModel($value)
// do something with the loaded record
それは可能ですか?
$model = Mage::getModel('foo_bar/baz');
$model->load('field_value', 'field_name');
これを使って
$_category = Mage::getModel('catalog/category')->loadByAttribute('name', 'computer');
$_product = Mage::getModel('catalog/product')->loadByAttribute('name', 'hp2312');
// Load by SKU
$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'computer123');
後藤モデルファイル
NameSpace/Yourmodule/Model/YourModel.php
コードの下に追加
public function loadByField($fieldvalue)
{
$this->_getResource()->loadByField($this, $fieldvalue);
return $this;
}
そして
NameSpace/YourModule/Model/Resource/YourModel.php
そしてコードは
public function loadByField(NameSpace_YourModule_Model_YourModel $Object, $fieldvalue)
{
$adapter = $this->_getReadAdapter();
$bind = array('fieldname' => $fieldvalue);
$select = $adapter->select()
->from($this->getMainTable(), 'tablePrimaryKey')
->where('fieldname = :fieldname');
$modelId = $adapter->fetchOne($select, $bind);
if ($modelId) {
$this->load($Object, $modelId );
} else {
$Object->setData(array());
}
return $this;
}