Ich habe ein Modul erstellt und möchte die Kernschreib- und Lesefunktion zum Einfügen, Aktualisieren, Löschen oder Auswählen des Datenbankwerts mit Bedingung verwenden. Wie kann ich dies ohne SQL tun? Modell = (Überweisung/Überweisung)
WÄHLEN
$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');
}
EINFÜGEN
$collection1= Mage::getModel('referral/referral');
$collection1->setData('customer_id',$customer_id)->save();
DELETE, UPDATE (mit Bedingung) = ???
Angenommen, ich habe ein Modul mit dem Namen mynews
. Hier folgt der Code zu select, insert, update, and delete data
aus der news
-Tabelle.
INSERT DATA
$data
enthält ein Datenfeld, das eingefügt werden soll. Der Schlüssel des Arrays sollte der Feldname der Datenbanktabelle sein und der Wert sollte der Wert sein, der eingefügt werden soll.
$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.
Um Inhalte drucken zu können, müssen wir $item->getContent()
schreiben.
$model = Mage::getModel('mynews/mynews');
$collection = $model->getCollection();
foreach($collection as $item){
print_r($item->getData());
print_r($item->getTitle());
}
UPDATE DATA
$id
ist die zu aktualisierende Zeilen-ID der Datenbanktabelle $data
enthält ein zu aktualisierendes Datenarray. Der Schlüssel des Arrays sollte der Feldname der Datenbanktabelle sein und der Wert sollte der zu aktualisierende Wert sein.
// $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
ist die zu löschende Zeilen-ID der Datenbanktabelle.
// $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();
}
Auf diese Weise können Sie in Ihrem benutzerdefinierten Modul und in jedem beliebigen magento code
auswählen, einfügen, aktualisieren und löschen.
Source: http://blog.chapagain.com.np/magento-how-to-select-insert-update-and-delete-data/
UPDATE ist im Wesentlichen die Kombination aus SELECT und INSERT. Sie laden eine Sammlung, durchlaufen sie, stellen die Werte nach Bedarf ein und rufen dann -> save () für jedes Modell auf.
DELETE wird direkt über die -> delete () - Funktion von Modellen bearbeitet. Laden Sie also entweder ein einzelnes Modell oder iterieren Sie eine SELECT-Sammlung und rufen Sie -> delete () auf.
(Nicht dass dies aufgrund der Iteration der schnellste Weg ist, diese Operationen für Auflistungen durchzuführen (da jede Abfrage statt einer einzelnen Abfrage, die mehrere Löschvorgänge gleichzeitig bearbeitet, eine neue Abfrage generiert), sondern die Leistung eignet sich für kleine Datensätze/SELECTs (weniger als 1k?) oder für Dinge, die Sie nicht oft machen (z. B. Importieren oder Aktualisieren von Preisen, 10k-Produkte einmal pro Tag).
ZUR AKTUALISIERUNG
$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ÜR LÖSCHEN
$id = $this->getRequest()->getParam('id');
$model = Mage::getModel('plugin/plugin');
$model->setId($id)->delete();
echo "Data deleted successfully.";
Sie können auch die select-Abfrage verwenden. es ist sehr leicht.
$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);
Wenn Sie mit einer auf Sammlung basierenden Bedingung löschen möchten, können Sie addFieldToFilter
, addAttributeToFilter
verwenden.
$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();
}