J'ai créé un module et je veux utiliser les fonctions d'écriture et de lecture principales pour insérer, mettre à jour, supprimer ou sélectionner une valeur de base de données avec condition. Comment puis-je le faire sans utiliser SQL? Modèle = (référence/référence)
SÉLECTIONNER
$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');
}
INSÉRER
$collection1= Mage::getModel('referral/referral');
$collection1->setData('customer_id',$customer_id)->save();
DELETE, UPDATE (avec condition) = ???
Supposons que j'ai un module nommé mynews
. Voici le code à select, insert, update, and delete data
de la table news
.
INSERT DATA
$data
contient un tableau de données à insérer. La clé du tableau doit être le nom du champ de la table de la base de données et la valeur doit être la valeur à insérer.
$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.
De même, pour imprimer du contenu, nous devons écrire $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
est l'id de la ligne de la table de la base de données à mettre à jour .$data
contient un tableau de données à mettre à jour. La clé du tableau doit être le nom du champ de la table de la base de données et la valeur doit être la valeur à mettre à jour.
// $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
est l'id de la ligne de la table de la base de données à supprimer.
// $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();
}
De cette manière, vous pouvez sélectionner, insérer, mettre à jour et supprimer dans votre module personnalisé et dans n’importe quel magento code
.
Source: http://blog.chapagain.com.np/magento-how-to-select-insert-update-and-delete-data/
UPDATE est essentiellement la combinaison de SELECT et INSERT. Vous chargez une collection, parcourez-les en définissant les valeurs selon vos besoins, puis appelez -> save () sur chaque modèle.
DELETE est géré directement via la fonction -> delete () des modèles. Donc, chargez un seul modèle ou parcourez-en une collection sélectionnée et appelez -> delete ()
(Ce n’est pas parce qu’il s’agit d’une itération que ce n’est pas le moyen le plus rapide d’effectuer ces opérations sur des collections (car chacune va générer une nouvelle requête, au lieu d’une requête unique qui gère plusieurs suppressions en même temps) convient aussi bien pour les petits ensembles de données/sélections (moins de 1 Ko?) que pour les tâches que vous ne faites pas souvent (par exemple, importer ou mettre à jour des prix avec 10 000 produits une fois par jour).
POUR MISE À JOUR
$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";
POUR SUPPRIMER
$id = $this->getRequest()->getParam('id');
$model = Mage::getModel('plugin/plugin');
$model->setId($id)->delete();
echo "Data deleted successfully.";
Vous pouvez également utiliser une requête de sélection comme celle-ci. c'est très facile.
$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);
Si vous souhaitez supprimer avec une condition basée sur la collecte, vous pouvez utiliser 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();
}