2016-04-05 17 views
10

Tôi muốn gieo rắc cơ sở dữ liệu khi tôi sử dụng nàyLaravel 5.2: Không thể xác định vị trí nhà máy với tên [default]

public function run() 
{ 
    $users = factory(app\User::class, 3)->create(); 
} 

Thêm ba người dùng trong cơ sở dữ liệu nhưng khi tôi sử dụng này

public function run() 
{ 
    $Comment= factory(app\Comment::class, 3)->create(); 
} 

Hiện lỗi của tôi

[InvalidArgumentException]
Không thể định vị nhà máy có tên [defau lt] [app \ Bình luận].

+0

Tên và không gian tên có chính xác không? Lớp học có thực sự tồn tại không? –

+1

Không nên là 'Ứng dụng' thay vì 'ứng dụng'? Ngoài ra, thông báo lỗi nói 'Commnet' vì vậy nếu bạn thực sự sao chép-dán mã trên thì lỗi xuất phát từ một nơi khác. –

+0

Tôi xin lỗi. Tôi sao chép sai. Tôi sửa bài viết của tôi – paranoid

Trả lời

17

Theo mặc định, cài đặt Laravel đi kèm với mã này trong tệp database/factories/ModelFactory.php.

$factory->define(App\User::class, function (Faker\Generator $faker) { 
    return [ 
     'name' => $faker->name, 
     'email' => $faker->email, 
     'password' => bcrypt(str_random(10)), 
     'remember_token' => str_random(10), 
    ]; 
}); 

Vì vậy, bạn cần xác định Mô hình nhà máy trước khi bạn sử dụng nó để tạo cơ sở dữ liệu. Điều này chỉ sử dụng một thể hiện của Faker Library được sử dụng để tạo ra dữ liệu giả để gieo cơ sở dữ liệu để thực hiện thử nghiệm.

Đảm bảo Bạn đã thêm Nhà máy phương thức tương tự cho Mô hình nhận xét.

Vì vậy, Nhà máy Comments mẫu của bạn sẽ được một cái gì đó như thế này:

$factory->define(App\Comment::class, function (Faker\Generator $faker) { 
    return [ 
     'comment' => $faker->sentence, 
     // Any other Fields in your Comments Model 
    ]; 
}); 
+2

Và khi bạn xem 'dòng 129' trong https://github.com/illuminate/database/blob/master/Eloquent/FactoryBuilder.php bạn sẽ thấy tại sao @Angry Coder là đúng. Tại thời điểm này không có định nghĩa cho lớp Bình luận của bạn. – Ben

8

này cũng có thể xảy ra khi bạn đang chạy các lệnh factory()->create() từ php artisan tinker. Đảm bảo bạn lưu tệp database/factories/ModelFactory.php trước khi mở tinker

1

1º Bước - Đảm bảo CommentFactory đang sử dụng Nhận xét thay vì Mô hình.

use App\Comment 
... 

    $factory->define(Comment::class, function (Faker $faker){ 

2º Bước - Xác minh rằng tên chính xác trong CommentsTableSeeder.

use App\Comment 
... 

public function run() 
{ 
    factory(Comment::class, 3)->create(); 
} 

Chúc may mắn!

Các vấn đề liên quan