Magento: выбрать из базы данных - PullRequest
4 голосов
/ 07 июля 2010

Я работаю над своим первым модулем для magento версии 1.3.2.3. Я создал простую таблицу (не EAV, просто первичный ключ и 2 столбца) и некоторые классы для доступа к ней, следуя статьям Alan Storm , которые мне очень помогли, но я не могу понять, как сделайте простой выбор: Алан объясняет, как загрузить с первичным ключом, но не выбирает строки, которые соответствуют некоторому значению.

В обычный MySQL Я бы написал:

SELECT *  
FROM my_table  
WHERE some_field = '" . $someValue . "'  

Я нашел фрагмент, который дает мне желаемый результат:

$resource = new Mage_Core_Model_Resource();  
$read = $resource->getConnection('core_read');  
$select = $read->select()
               ->from('my_table')
               ->where('some_field = ?', $someValue);  
return $read->fetchAll($select);  

Но должно быть более простое / красивое решение, использующее класс модели, который я создал. Результатом будет одна строка, а не коллекция.
Я перепробовал все, что мог придумать, например:

return Mage::getModel('modulename/classname')->select()->where('some_field = ?', $comeValue);
return Mage::getModel('modulename/classname')->load()->where('some_field = ?', $comeValue);  
return Mage::getModel('modulename/classname')->load(array('some_field = ?', $comeValue));  

и другие вещи, но пока не повезло: чего мне не хватает ??

Ответы [ 2 ]

7 голосов
/ 07 июля 2010

Возможно, вы захотите использовать Коллекция вашей модели для этого.

$collection = Mage::getModel('mygroup/mymodel')->getCollection();
$collection->addFieldToFilter('some_field',$some_value);

foreach($collection as $item)
{
    var_dump($item);
}

var_dump($collection->getFirstItem());
var_dump($collection->getLastItem());
6 голосов
/ 08 июля 2010

Вот пример того, как это достигается в классе модели CoreUrlRewrite:

public function loadByIdPath($path)
{
    $this->setId(null)->load($path, 'id_path');
    return $this;
}

Вы можете создавать аналогичные методы в ваших классах модели.Вы также можете использовать альтернативную форму метода загрузки в любом месте вашего кода:

$model = Mage::getModel('modulename/classname')->load($someValue, 'some_field');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...