У меня есть фабрика posts
и фабрика posts_images
, в сообщении может быть много изображений, я создал сеялку для сообщений, которые выглядят следующим образом.
$posts = factory(App\Models\Post::class, 100)->create()
->each(function($post) {
$post->images()->saveMany(factory(App\Models\PostsImage::class, 3)->make());
});
Я хочусоздать 100 posts
и что каждый пост имеет 3 images
, этот вид работы, проблема в том, когда изображение создается
Я хочу, чтобы изображение было создано из строки base_64 и сохранено в определенном каталоге, но яМне нужно id
из post
, чтобы я мог создать папку, в которой он будет создан.
$factory->define(App\Models\PostsImage::class, function (Faker $faker) {
//this does not get me the id
$id = factory(\App\Models\Post::class)->make()->id;
$name = time();
$b64_image = \Config::get('constants.seed_image');
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $b64_image));
if(!file_exists(public_path('images/eventos/'.$id.'/'))) {
mkdir(public_path('images/noticias/'.$id.'/'));
}
file_put_contents(public_path('images/noticias/'.$id.'/'.$name.'.jpg'), $data);
return [
//
'image' => $name,
'order' => $id + 1
];
});
Единственная строка, которая, кажется, не работает, это
$id = factory(\App\Models\Post::class)->make()->id;
Я попытался использовать create
вместо make
, но это создает больше строк в таблице post
, и я не хочу этого.
Есть ли способ передать post
id
к фабрике изображений?