Подтвердить что ты не робот

Magento - модуль INSERT, UPDATE, DELETE, SELECT код

Я создал модуль и хочу использовать основную функцию записи и чтения для вставки, обновления, удаления или выбора значения базы данных с условием, как я могу это сделать без использования SQL? Пример: $ Customer_id = 123 Модель = (направление/направление)

SELECT

 $collection3 = Mage::getModel('referral/referral')->getCollection();
    $collection3->addFieldToFilter('customer_id', array('eq' => $customer_id));
    foreach($collection3 as $data1)
    {
    $ref_cust_id.= $data1->getData('referral_customer_id'); 
    }

ВСТАВИТЬ

$collection1= Mage::getModel('referral/referral');
$collection1->setData('customer_id',$customer_id)->save();

DELETE, UPDATE (с условием) =???

4b9b3361

Ответ 1

Предположим, у меня есть модуль с именем mynews. Здесь следует код select, insert, update, and delete data из таблицы news.

INSERT DATA

$data содержит массив данных для вставки. Ключом массива должно быть имя поля таблицы базы данных, а значение должно быть введенным значением.

$data = array('title'=>'hello there','content'=>'how are you? i am fine over here.','status'=>1);
$model = Mage::getModel('mynews/mynews')->setData($data);
try {
    $insertId = $model->save()->getId();
    echo "Data successfully inserted. Insert ID: ".$insertId;
} catch (Exception $e){
 echo $e->getMessage();   
}

SELECT DATA

$item->getData() prints array of data from ‘news’ table.
$item->getTitle() prints the only the title field.

Аналогично, для печати содержимого нам нужно написать $item->getContent().

$model = Mage::getModel('mynews/mynews');
$collection = $model->getCollection();
foreach($collection as $item){
print_r($item->getData());
print_r($item->getTitle());
}

UPDATE DATA

$id - это идентификатор строки таблицы базы данных, подлежащий обновлению. $data содержит массив данных для обновления. Ключ массива должен быть именем поля таблиц базы данных, а значение должно быть значением, которое необходимо обновить.

// $id = $this->getRequest()->getParam('id');
$id = 2;
$data = array('title'=>'hello test','content'=>'test how are you?','status'=>0);
$model = Mage::getModel('mynews/mynews')->load($id)->addData($data);
try {
    $model->setId($id)->save();
    echo "Data updated successfully.";

} catch (Exception $e){
    echo $e->getMessage(); 
}

DELETE DATA

$id - идентификатор строки таблицы базы данных, который необходимо удалить.

// $id = $this->getRequest()->getParam('id');
$id = 3;
$model = Mage::getModel('mynews/mynews');
try {
    $model->setId($id)->delete();
    echo "Data deleted successfully.";

} catch (Exception $e){
    echo $e->getMessage(); 
}

Таким образом, вы можете выполнять выбор, вставку, обновление и удаление в своем настраиваемом модуле и в любом magento code.

Источник: http://blog.chapagain.com.np/magento-how-to-select-insert-update-and-delete-data/

Ответ 2

UPDATE - это в основном комбинация SELECT и INSERT. Вы загружаете коллекцию, итератируете по ним, устанавливая значения по мере необходимости, а затем вызывайте → save() для каждой модели.

DELETE обрабатывается непосредственно через → delete() functon моделей. Поэтому либо загружайте одну модель, либо перебирайте ее из коллекции SELECTed, а вызов → delete()

(Не то, что из-за итерации это не самый быстрый способ делать эти операции над коллекциями (поскольку каждый из них собирается генерировать новый запрос, а не один запрос, который обрабатывает сразу несколько удалений) но производительность отлично подходит для небольших наборов данных /SELECT (менее 1k?) или для вещей, которые вы не делаете очень часто (например, импортировать или обновлять цены ок 10k продуктов один раз в день).

Ответ 3

ДЛЯ ОБНОВЛЕНИЯ

    $new=$this->getRequest()->getParams();
    $id=$new['id'];
    $name=$new['name'];

    $con=Mage::getModel('plugin/plugin')->load($id);
      $con->setData('name',$name)->save();

    echo "Update Success";

ДЛЯ УДАЛЕНИЯ

    $id = $this->getRequest()->getParam('id');
    $model = Mage::getModel('plugin/plugin');
    $model->setId($id)->delete();
    echo "Data deleted successfully.";

Ответ 4

Вы также можете использовать запрос select. его очень легко.

$salesInvoiceCollection_sql = "SELECT  `entity_id` ,  `increment_id`,`order_id` 
                                    FROM  `sales_flat_invoice` 
                                    WHERE  `erp_invoice_id` = 0
                                    ORDER BY `entity_id`
                                    DESC limit 1000";

    $salesInvoiceCollection = Mage::getSingleton('core/resource')->getConnection('core_read')->fetchAll($salesInvoiceCollection_sql);

Ответ 5

Если вы хотите удалить условие, основанное на коллекции, вы можете использовать addFieldToFilter, addAttributeToFilter

$model = Mage::getModel('mynews/mynews')->getCollection();
try {
    $model->addAttributeToFilter('status', array('eq' => 1));
    $model->walk('delete');
    echo "Data deleted successfully.";

} catch (Exception $e){
    echo $e->getMessage(); 
}