Codeigniter - Lot de mise à Jour avec de Multiples Où les Conditions
Pour commencer, le Codeigniter documentation sur update_batch n'existe pas. kenjis a eu la gentillesse de fournir de la documentation et de le soumettre au référentiel. J'espère qu'ils tirez bientôt.
Personne ne sait comment ajouter plusieurs cas où les conditions de Codeigniters update_batch commande?
Mon Utilisation Souhaitée:
$where = array(
'title',
'name'
);
$this->db->update_batch('mytable', $data, $where);
Quand j'ai essayé ce code j'ai eu l'erreur de suivi:
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
Mise à jour de la Documentation du Lot par kenjis:
$this->db->update_batch();
Génère une mise à jour de la chaîne sur la base des données que vous fournissez, et exécute la requête. Vous pouvez passer soit une tableau ou un objet à la fonction. Voici un exemple utilisant un tableau:
$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')
Le premier paramètre contient le nom de la table, le deuxième est un tableau associatif des valeurs, le troisième paramètre est le clé où.
Sources:
- kenjis la documentation de mise à jour:
https://bitbucket.org/kenjis/ci-user-guide/changeset/3d579dd14afe - saintnicster de pull request: https://github.com/EllisLab/CodeIgniter/pull/448
OriginalL'auteur zechdc | 2011-09-15
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas ajouter de multiples clauses where pour
update_batch()
. Il n'accepte une chaîne de caractères en tant que troisième paramètre pour la clause where, donc je suis sûr qu'il n'y a aucun moyen de le faire cette manière, la méthode est actuellement écrit.De la source:
UPDATE mytable SET ... WHERE id IN(1,2,3) AND mycategory = 44
OriginalL'auteur Chris Schmitz
J'utilise codeigniter 3.1.5 et avait le même problème, mais j'ai résolu mon problème comme suit:
Produit:
J'ai eu un problème en essayant d'ajouter plus de 100 enregistrements avec update_batch, par exemple:
Premier appel (et OÙ):
Deuxième appel (Sans OÙ):
Essayez ceci:
Modèle:
Wow mec, vous êtes hors de la boîte penseur. Je voudrais de ne jamais bien. Merci
Vous êtes des génies de l'homme! merci à vous pour me sauver.
Merci de me sauver de trop..
si seulement vous pouviez penser à un moyen d'où le deuxième indice dynamique était trop!
OriginalL'auteur Rodrigo Prazim