6
votes

4 Réponses :


12
votes

Vous êtes définitivement sur la bonne voie. Créez un nouveau haricon à l'aide de $ haricoter = r :: Distribution ('haricot »); ou plusieurs haricots comme une matrice $ haricots = r :: Distribution (' haricot ', 5); / Code>

Ensuite, vous remplissez les haricots avec des données: xxx

puis stockez le (s) haricot (s): xxx < P> Tous les haricots doivent avoir le même type si vous avez des multiples autant que je sache, vous pouvez donc faire quelque chose comme: xxx

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!


0 commentaires

4
votes

Certaines données réelles derrière cette approche. PREMIÈRE APPROCHE. foreach item a trouvé xxx pré>

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


0 commentaires

0
votes

Par conséquent, chaque haricot doit être créé en premier et le procédé de création d'un haricot est distribuer xxx pré>

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


2 commentaires

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



0
votes

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();


0 commentaires