IT/PHP

[Laravel] factory , seeder 사용시 Call to undefined function factory()

월공 2022. 9. 23. 23:10
728x90
300x250
#생성할 데이터 타입에 맞는 format 지정
php artisan make:factory BookableFactory --model=Bookable

# seeder 생성
php artisan make:seeder BookablesTableSeeder
# 마이그레이션 재실행, DB 재구성
php artisan migrate:fresh --seed
#BookableFactory.php

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Bookable;
use Faker\Generator as Faker;
use Illuminate\Support\Arr;

$suffix = [
    'Villa',
    'House',
    'Cottage',
    'Luxury Vialls',
    'Cheap House',
    'Rooms',
    'Cheap Rooms',
    'Rooms',
    'Luxury Rooms',
    'Fancy Rooms'
];

$factory->define(Bookable::class, function (Faker $faker) use ($suffix) {
    return [
        'title' => $faker->city . ' ' . Arr::random($suffix),
        'description' => $faker->text(),
    ];
});
#BookablesTableSeeder.php

<?php

use App\Bookable;
use Illuminate\Database\Seeder;

class BookablesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(Bookable::class, 100)->create();
    }
}

BookablesTableSeeder.php 에서 factory undefined 오류


laravel 8 에서부터 factory 는 존재하지않아서 오류가 남
아래 명령어로 레거시 패키지 추가해서 해결할수 있음

composer require laravel/legacy-factories

composer 추가한 후에 vscode 한번 껐다 재시작 하고나니까 잘됨

 

728x90
300x250