web-dev-qa-db-ja.com

Magento-モジュールINSERT、UPDATE、DELETE、SELECTコード

モジュールを作成し、コアの書き込みおよび読み取り機能を使用して、条件付きのデータベース値を挿入、更新、削除、または選択したいのですが、SQLを使用せずにそれを行うにはどうすればよいですか?例:$ customer_id = 123 Model =(referral/referral)

選択する

 $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(条件付き)= ???

13
Lim Heng Cheun

mynewsという名前のモジュールがあるとします。次に、newsテーブルから_select, insert, update, and delete data_へのコードを示します。

_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_は、更新するデータベーステーブルの行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です。

_// $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/

25
Dead Man

UPDATEは基本的にSELECTとINSERTの組み合わせです。コレクションをロードし、必要に応じて値を設定してそれらを反復処理してから、各モデルで-> save()を呼び出します。

DELETEは、モデルの-> delete()関数を介して直接処理されます。したがって、単一のモデルをロードするか、それらのSELECTされたコレクションを反復処理して、-> delete()を呼び出します。

(反復のため、これはコレクションに対してこれらの操作を実行する「最速」の方法ではありません(それぞれが一度に複数の削除を処理する単一のクエリではなく、新しいクエリを生成するため)が、パフォーマンス小さなデータセット/ SELECT(1,000未満?)またはあまり頻繁に実行しないもの(1日1回、10,000個の製品の価格のインポートまたは更新など)には問題ありません。

2
Jared Kipe

更新用

    $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.";
1
Ashwin Shahi

このような選択クエリも使用できます。それは非常に簡単です。

$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);
0
sanji

コレクションに基づく条件で削除する場合は、addFieldToFilteraddAttributeToFilterを使用できます

$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(); 
}
0
Rahul Dadhich