Codeigniter - Batch-Update mit Mehreren Where-Bedingungen
Für Vorspeisen, die Codeigniter Dokumentation auf update_batch nicht vorhanden. kenjis war freundlich genug, um einige Unterlagen und legt Sie dem repository. Hoffentlich ziehen Sie es bald.
Weiß jemand, wie Sie mehrere where-Bedingungen Codeigniters update_batch Befehl?
Meine Gewünschte Verwendung:
$where = array(
'title',
'name'
);
$this->db->update_batch('mytable', $data, $where);
Wenn ich habe versucht, diesen code hab ich folgende Fehler:
A Database Error Occurred
One or more rows submitted for batch updating is missing the specified index.
Filename: C:\wamp\www\wheel\system\database\DB_active_rec.php
Line Number: 1451
Update Batch-Dokumentation von kenjis:
$this->db->update_batch();
Erzeugt eine update-string basierend auf den Daten, die Sie liefern, und führt die Abfrage aus. Sie können entweder übergeben Sie ein array oder eine Objekt der Funktion. Hier ist ein Beispiel mit einem array:
$data = array(
array(
'title' => 'My title' ,
'name' => 'My Name 2' ,
'date' => 'My date 2'
),
array(
'title' => 'Another title' ,
'name' => 'Another Name 2' ,
'date' => 'Another date 2'
)
);
$this->db->update_batch('mytable', $data, 'title');
//Produces:
//UPDATE `mytable` SET `name` = CASE
//WHEN `title` = 'My title' THEN 'My Name 2'
//WHEN `title` = 'Another title' THEN 'Another Name 2'
//ELSE `name` END,
//`date` = CASE
//WHEN `title` = 'My title' THEN 'My date 2'
//WHEN `title` = 'Another title' THEN 'Another date 2'
//ELSE `date` END
//WHERE `title` IN ('My title','Another title')
Wird der erste parameter enthält den Namen der Tabelle, die zweite ist ein assoziatives array von Werte, der Dritte parameter ist die, wo der Schlüssel ist.
Quellen:
- kenjis Dokumentation update:
https://bitbucket.org/kenjis/ci-user-guide/changeset/3d579dd14afe - saintnicster die pull-Anforderung: https://github.com/EllisLab/CodeIgniter/pull/448
InformationsquelleAutor zechdc | 2011-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht Sie können mehrere where-Klauseln zu
update_batch()
. Es akzeptiert nur eine Zeichenfolge als Dritten parameter für die where-Klausel also ich bin sicher, es gibt keine Möglichkeit, dies zu tun die Weise, die Methode wird derzeit geschrieben.Aus der Quelle:
UPDATE mytable SET ... WHERE id IN(1,2,3) AND mycategory = 44
InformationsquelleAutor Chris Schmitz
Ich bin mit codeigniter 3.1.5 und hatte das gleiche problem, aber ich habe mein problem gelöst wie folgt:
Produziert es:
Hatte ich ein problem, die versuchen, hinzufügen von mehr als 100 Datensätze mit update_batch, zum Beispiel:
Ersten Aufruf (mit WO):
Zweiten Aufruf (Ohne WO):
Versuchen Sie dies:
Modell:
Wow dude Sie ein out of the box Denker. Ich würde nie aber. Dank
Sie sind das GENIE der Mann! vielen Dank für meine Rettung.
Vielen Dank für die Rettung mich auch..
wenn nur Sie könnten denken Sie an einen Weg, wo der zweite index wurde ebenfalls dynamisch!
InformationsquelleAutor Rodrigo Prazim