Crear un avatar falso en User Factory

Puedes crear métodos adicionales en tus clases Factory. Por ejemplo: al crear un usuario falso dentro de UserFactory, también puedes agregar withAvatar() que llamarías desde Seeder.

 

// database/seeders/DatabaseSeeder.php:
User::factory()
    ->count(10)
    ->withAvatar() // <-- THIS
    ->create();
 
// ======================================
 
// database/factories/UserFactory.php:
use Illuminate\Support\Facades\Storage;
 
class UserFactory extends Factory
{
    public function withAvatar(): Factory|UserFactory
    {
        return $this->afterCreating(function (User $user) {
            $url = "https://ui-avatars.com/api/?name=" . $user->name;
            $contents = Http::get($url)->body();
            $name = Str::random(10) . '.png';
            Storage::disk('public')->put($name, $contents);
            $user->update(['avatar' => $name]);
        });
    }

Fuente: Laravel Daily