Les bases
Travaux pratiques
L'objet
Exercices
Travaux Pratique 2
Conclusion

Pour pouvoir travailler plus confortablement sur notre application nous allons remplir notre base de données avec des données de tests et vu que l'on est un peu feignant on va créer un script que l'on pourra appeler pour remplir instantanément la base avec des dixaines de contenus.

On commence par complètement vider la base de données :

$pdo->exec('SET FOREIGN_KEY_CHECKS = 0');
$pdo->exec('TRUNCATE TABLE post_category');
$pdo->exec('TRUNCATE TABLE post');
$pdo->exec('TRUNCATE TABLE category');
$pdo->exec('TRUNCATE TABLE user');
$pdo->exec('SET FOREIGN_KEY_CHECKS = 1');

Pour remplir la base on peut générer des titres à la main en se basant sur l'index de notre boucle ou se baser sur une librairies comme faker afin d'avoir des données plus "réalistes".

$faker = Faker\Factory::create('fr_FR');
// On enregistre les ids des contenus créés
$posts = [];
$categories = [];

for ($i = 0; $i < 50; $i++) {
    $pdo->exec("INSERT INTO post SET name='{$faker->sentence()}', slug='{$faker->slug}', created_at='{$faker->date} {$faker->time}', content='{$faker->paragraphs(rand(3,15), true)}'");
    $posts[] = $pdo->lastInsertId();
}

for ($i = 0; $i < 5; $i++) {
    $pdo->exec("INSERT INTO category SET name='{$faker->sentence(3)}', slug='{$faker->slug}'");
    $categories[] = $pdo->lastInsertId();
}

// On associe aléatoirement des articles à des catégories
foreach($posts as $post) {
    $randomCategories = $faker->randomElements($categories, rand(0, count($categories)));
    foreach ($randomCategories as $category) {
        $pdo->exec("INSERT INTO post_category SET post_id=$post, category_id=$category");
    }
}

Ce code permet de créer 50 articles et 5 catégories en une seule fois.