использование фабрики - более чистый способ создания начальных данных. Я могу сгенерировать результат из другого метода foreach или для цикла. но как это сделать с фабрикой?
ниже находится страница пост-фабрики
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\Post;
use App\MetaData;
use Faker\Factory;
$factory->define(Post::class, function () {
$faker = Faker\Factory::create('en_IN');
$w = $faker->unique()->sentence.' '.mt_rand(0,1000);
$r = [
'title' => $w,
'slug' => strtolower(str_replace(' ', '-', $w)),
'banner' => 'https://source.unsplash.com/random/600x600',
'content' => $faker->text,
'views' => mt_rand(0,1000),
'status' => rand(0,1),
'creator_id' => mt_rand(0,100),
'moderator_id' => mt_rand(0,100),
];
$factory->define(MetaData::class, function () {
return [
'for' => 'article',
'record_id' => $r->id,
'title' => $w,
'slug' => strtolower(str_replace(' ', '-', $w)),
'description' => $faker->sentences,
'banner' => 'https://source.unsplash.com/random/600x600',
'keywords' => $faker->words,
'status' => 1,
'creator_id' => mt_rand(0,100),
'moderator_id' => mt_rand(0,100),
];
});
return $r;
});
Я хочу сделать что-то подобное, но в итоге получится ошибка, как показано ниже:
ErrorException : Undefined variable: factory
at /Users/dragonar/Dev/pdp/database/factories/PostFactory.php:23
19| 'creator_id' => mt_rand(0,100),
20| 'moderator_id' => mt_rand(0,100),
21| ];
22|
> 23| $factory->define(MetaData::class, function () {
24| return [
25| 'for' => 'article',
26| 'record_id' => $r->id,
27| 'title' => $w,
Exception trace:
1 Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Undefined variable: factory", "/Users/dragonar/Dev/pdp/database/factories/PostFactory.php", [Object(Faker\Generator), "Aut voluptatum sed aut beatae. 380"])
/Users/dragonar/Dev/pdp/database/factories/PostFactory.php:23
2 Illuminate\Database\Eloquent\Factory::{closure}(Object(Faker\Generator), [])
/Users/dragonar/Dev/pdp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:273
Please use the argument -v to see more details.
, если это решит, я также хочу добавить категории и теги к тому же сообщению.