Peut-être qu'une façon plus Laravel de résoudre ce problème est d'utiliser une collection et de la boucler en l'insérant avec le modèle en profitant des timestamps.
<?php
use App\Continent;
use Illuminate\Database\Seeder;
class InitialSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
collect([
['name' => 'América'],
['name' => 'África'],
['name' => 'Europa'],
['name' => 'Asia'],
['name' => 'Oceanía'],
])->each(function ($item, $key) {
Continent::forceCreate($item);
});
}
}
EDIT :
Désolé pour mon malentendu. Pour l'insertion en masse, cela pourrait aider et peut-être qu'avec cela vous pouvez faire de bons semoirs et les optimiser un peu.
<?php
use App\Continent;
use Carbon\Carbon;
use Illuminate\Database\Seeder;
class InitialSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$timestamp = Carbon::now();
$password = bcrypt('secret');
$continents = [
[
'name' => 'América'
'password' => $password,
'created_at' => $timestamp,
'updated_at' => $timestamp,
],
[
'name' => 'África'
'password' => $password,
'created_at' => $timestamp,
'updated_at' => $timestamp,
],
[
'name' => 'Europa'
'password' => $password,
'created_at' => $timestamp,
'updated_at' => $timestamp,
],
[
'name' => 'Asia'
'password' => $password,
'created_at' => $timestamp,
'updated_at' => $timestamp,
],
[
'name' => 'Oceanía'
'password' => $password,
'created_at' => $timestamp,
'updated_at' => $timestamp,
],
];
Continent::insert($continents);
}
}
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.