2013-03-13 14 views
12

モジュールを作成し、挿入、更新、削除、または条件付きのデータベース値の選択にコアの書き込みと読み取り機能を使用するには、SQLを使用せずにどうすればいいですか? 例: $ CUSTOMER_ID = 123 モデル=(紹介/紹介)Magento - モジュールINSERT、UPDATE、DELETE、SELECTコード

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'); 
    } 

INSERT

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

(条件付き)DELETE、UPDATE = ???

答えて

24

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更新するデータベーステーブルの行番号です。 $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削除するデータベーステーブルの行番号です。あなたはSELECT、INSERT、UPDATEを実行し、カスタムモジュールで、任意のmagento codeに削除することができます。このように

// $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(); 
} 

出典:UPDATE FOR http://blog.chapagain.com.np/magento-how-to-select-insert-update-and-delete-data/

+0

このような素晴らしいリソースのThx。 – ravisoni

+0

Thx!助けてください=) –

2

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

DELETEは、モデルの - > delete()functonを介して直接処理されます。したがって、単一のモデルを読み込んだり、選択したコレクションを繰り返し処理したりして、 - > delete()を呼び出すことができます。

(これは繰り返しによるものではなく、 1つは、一度に複数の削除を処理する1つのクエリではなく、新しいクエリを生成します)が、小さなデータセット/ SELECT(1k未満)やパフォーマンスが良くない多くの場合(1日1回OK 10K製品の価格をインポートまたは更新するなど)。

+0

いくつかの例がありますか? thx =) –

0

ます。また、このような選択クエリを使用することができます。そのは非常に簡単。

$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

あなたが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(); 
} 
1

$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"; 

F削除する

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