J'espérais un exemple sur la façon d'insérer des nouvelles "haricots" en lecturebeanphp sans boucle sur chaque instance. P>
Il montre un exemple de création et de sauvegarde des haricots ici: http://redeferf.com/manual/create_a_bean a> p>
Il est mentionné sur la méthode StorEll ($ haricots), mais je ne suis pas sûr de savoir comment je suis supposé formater les données en $ haricots. P>
J'ai essayé de googler pour cela et je ne trouve rien de ce qui concerne les inserts en vrac. Peut-être que j'ai cherché les mauvais termes. P>
Je suis nouveau à cet orme, toute aide pour être appréciée, merci! p>
4 Réponses :
Vous êtes définitivement sur la bonne voie. Créez un nouveau haricon à l'aide de Ensuite, vous remplissez les haricots avec des données: p> puis stockez le (s) haricot (s): p> Je pourrais avoir tort à ce sujet. L'essentiel est que c'est tout un orateur typique, mais Redbean prend également en charge SQL régulier si vous devez l'utiliser. J'espère que cela aide! P> p> $ haricoter = r :: Distribution ('haricot »); code> ou plusieurs haricots comme une matrice
$ haricots = r :: Distribution (' haricot ', 5); / Code>
Certaines données réelles derrière cette approche.
PREMIÈRE APPROCHE.
foreach item a trouvé Temps pris pour 5660 lignes = 43S sur mon Mac P> deuxième approche. P> for loop
R::exec("insert into bean(title) values (1,'hello world')");
end for
Par conséquent, chaque haricot doit être créé en premier et le procédé de création d'un haricot est distribuer Le code ci-dessus ne crée qu'une seule haricot même après la conservation. Toujours $ Bean fait référence au même objet, donc pour chaque enregistrement que vous devez créer un nouveau été en utilisant une méthode de distribution. P> Heureusement, nous avons la méthode StorEll qui stocke toutes les haricots mais nécessite une gamme de haricots. Nous créons donc un haricot dans chaque itération et poussons-le à la matrice puis à la fin de la boucle, nous venons de passer ce tableau à la fonction StorEll. P> //create empty array
$beans = array();
//for each customer post create a new bean as a row/record
foreach ($post as $customer) {
$bean = R::dispense('customers');
//assign column values
$bean->firstName = $customer['first_name'];
$bean->lastName = $customer['last_name'];
//push row to array
$beans[] = $bean;
}
//store the whole array of beans at once
R::storeAll($beans);
Tandis que cet extrait de code peut résoudre la question, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.
Merci Bono, description ajoutée
Dans les approches 1, 2 et 3 suggérées par John Ballinger, une façon d'optimiser le temps d'exécution consiste à mettre toutes les insertions effectuées par StorEll ($ haricots) à l'intérieur d'une transaction de base de données. Cela pourrait être fait comme suit: Remplacez la ligne "R :: STOREALLL ($ haricots)" par les trois lignes suivantes:
R::begin(); R::storeAll($beans); R::commit();