Comment effectuer des insertions de base de données en masse dans Laravel en utilisant Eloquent ORM ?
Je travaille avec un document XML, en parcourant ses éléments en boucle. Je veux accomplir quelque chose comme cela dans Laravel :
$sXML = download_page('http://remotepage.php&function=getItems&count=100&page=1');
$oXML = new SimpleXMLElement($sXML);
$query = "INSERT INTO tbl_item (first_name, last_name, date_added) VALUES";
foreach($oXML->results->item->item as $oEntry){
$query .= "('" . $oEntry->firstname . "', '" . $oEntry->lastname . "', '" . date("Y-m-d H:i:s") . "'),";
}
mysql_query($query);
mais j'obtiens l'erreur suivante.
SQLSTATE [HY093] : Invalid parameter number : mixed named and positional parameters.
1 votes
Avez-vous un
has_many
relation sur vos modèles ?1 votes
Non, je n'ai pas de relations en ce moment.
0 votes
@DavidBarker J'ai essayé de former la chaîne de questions en utilisant une boucle for. J'ai également essayé d'utiliser les transactions dans Laravel.
0 votes
@AramBhusal Pourriez-vous afficher votre code ? Je suis sûr que j'ai du code ici qui pourra vous aider.
0 votes
Avez-vous vu laravel.com/docs/database/eloquent#mass-assignment ?
0 votes
@DavidBarker J'ai essayé cette approche. stackoverflow.com/questions/10615762/php-bulk-insert-foreach et a utilisé l'instance pdo pour préparer et exécuter le satement. Je me heurte à SQLSTATE [HY093] : Numéro de paramètre invalide : mélange de paramètres nommés et positionnels
0 votes
@BenjaminRH l'affectation de masse consiste à affecter automatiquement des entrées aux champs d'un seul modèle, il ne s'agit pas de créer plusieurs modèles à la fois.