13

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

選択する

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

4

5 に答える 5

2

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

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

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

于 2013-03-13T04:29:43.353 に答える
0

コレクションに基づいた条件で削除したい場合は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(); 
}
于 2014-06-18T06:47:36.517 に答える