Использование Faker для генерации тестовых данных в Yii2
Об использовании Faker для генерации тестовых данных на любом сайте здесь . Здесь речь пойдёт о генерации тестовых данных для сайта на Yii2 с помощью того же Faker.
Faker в Yii2 поставляется «из коробки». Убедиться в этом можно открыв файл coomposer.json
:
"yiisoft/yii2-faker": "~2.0.0"
Генерировать тестовые данные будем в SiteContoller.php
Простая генерация с выводом данных
use Faker\Factory; public function actionGenerate() { $faker = Factory::create(); echo $faker->text(35).'<br>'; echo $faker->text(rand(100, 200)); }
Генерация нескольких постов и записей в БД
Нам потребуется модель. Можно воспользоваться Gii (предварительно должно быть подключение к БД и создана соответветствующая таблица)
use Faker\Factory; public function actionGenerate() { $faker = Factory::create(); for($i = 0; $i < 100; $i++) { $post = new Posts(); $post->title = $faker->text(30); $post->anons = $faker->text(rand(100, 200)); $post->content = $faker->text(rand(1000, 2000)); $post->status = rand(0, 1); $post->created_at = $faker->unixTime(); $post->save(false); } die('Data generation is complete!'); }
Генерация множества записей
use Faker\Factory; public function actionGenerate() { $faker = Factory::create(); for($i = 0; $i < 100; $i++) { $posts = []; for ($j = 0; $j < 100; $j++) { $posts[] = [ $faker->text(30), $faker->text(rand(100, 200)), $faker->text(rand(1000, 2000)), rand(0, 1), $faker->unixTime() ]; } Yii::$app->db->createCommand()->batchInsert('posts', ['title', 'anons', 'content', 'status', 'created_at'], $posts)->execute(); unset($posts); } die('Data generation is complete!'); }