web-dev-qa-db-de.com

Magento - Modul INSERT, UPDATE, DELETE, SELECT Code

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) = ???

13
Lim Heng Cheun

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/

25
Dead Man

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).

2
Jared Kipe

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

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

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