Использование 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!');
}
Предыдущая запись
Yii2: Добавить класс на элемент формы ActiveFormСледующая запись
Yii2: Использование класса yii\imagine\Image