Hasfactory Laravel là gì

answer

Hasfactory Laravel là gì

Lý Duy Minh · Lý Duy Minh 18:11 17/09/2020

Nếu bạn đã nâng cấp lên 8 từ phiên bản trước, có thể bạn đang thiếu chỉ thị tự động nạp cho Database\Factorieskhông gian tên trong composer.json:

"autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } },

Bạn cũng có thể xóa classmapphần này vì nó không còn cần thiết nữa.

Chạy composer dumpsau khi thực hiện những thay đổi này.

Tài liệu Laravel 8.x - Hướng dẫn Nâng cấp - Cơ sở dữ liệu - Không gian tên gốc và Nhà máy

30 hữu ích 1 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Hoàng Uyên Thơ · Hoàng Uyên Thơ 09:34 03/11/2020

Rõ ràng bạn cũng phải tôn trọng cấu trúc thư mục. Ví dụ: nếu bạn có Mô hình người dùng trong đường dẫn sau:, app\Models\Users\Userthì nhà máy tương ứng sẽ được đặt tại database\factories\Users\UserFactory.

5 hữu ích 0 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Hoàng Quốc Thiên · Hoàng Quốc Thiên 06:19 12/11/2020

Tôi đang trong quá trình chuyển từ laravel 7 sang 8.

Sau khi đập đầu vào tường một lúc và xem mã nguồn, tôi thấy rằng bạn có thể tùy chọn ghi đè lớp nhà máy nào được gọi cho một mô hình bằng cách sử dụng newFactoryphương thức trên mô hình.

Sau đó, tôi cũng nhận thấy rằng nó LÀ trong tài liệu ( https://laravel.com/docs/8.x/database-testing#creating-models ) - Tôi chỉ không hiểu nó có nghĩa là gì trong lần đầu tiên tôi đọc nó. Bây giờ tôi làm.

Tôi đã giải quyết vấn đề này bằng cách sau:

<?php namespace My\Fancy\Models; use Database\Factories\SomeFancyFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class SomeClass extends Model { use HasFactory; /** @return SomeFancyFactory */ protected static function newFactory() { return SomeFancyFactory::new(); } }

Sau sự thay đổi này, các bài kiểm tra của tôi đã vượt qua như mong đợi.

4 hữu ích 2 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Hoàng Yến Hồng · Hoàng Yến Hồng 16:29 28/11/2020

Bạn cần đảm bảo rằng không gian tên giống nhau: như hình dưới đây: nếu không điều này sẽ khiến bạn mất nhiều thời gian. Tên của nhà máy là name of the model+Factory

ví dụ app\models\User- sẽ khớp vớidatabase/factories/UserFactory

cuối cùng đảm bảo bạn chạy: composer dumpautoload

4 hữu ích 3 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Dương Đức Huy · Dương Đức Huy 10:31 19/02/2021

Có thể là tất cả mọi thứ là hoàn hảo chỉ cần chạy composer dump-autoload. Nó đã xảy ra với tôi.

1 hữu ích 0 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Hoàng Duy An · Hoàng Duy An 10:57 27/03/2021

Trong trường hợp của riêng tôi, nó xảy ra trong một dự án Laravel 8 tức là nó không phải là một dự án tôi đã nâng cấp từ Laravel 7. Và tôi nhận thấy điều này sau khi thực hiện composer updategần đây.

1: Khi tạo mô hình, hãy tạo nhà máy cùng với

php artisan make:model BusinessUser -f // -f creates the factory

2: Đối với các mô hình cũ của bạn, hãy bình luận use HasFactory;hoặc chỉ tạo nhà máy

php artisan make:factory BusinessUserFactory -m

1 hữu ích 0 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Đỗ Mai Ly · Đỗ Mai Ly 02:57 06/12/2020

Tôi đã gặp vấn đề tương tự, nhưng vì một lý do khác. Nếu bạn đang sử dụng các nhà máy trong setUpchức năng thử nghiệm, hãy đảm bảo:

  1. Bạn đang mở rộng Tests\TestCase(thay vì PHPUnit\Framework\TestCase)
  2. Dòng đầu tiên của setUphàm của bạn phải là parent::setUp();(Tôi đã thiếu cái này)

0 hữu ích 1 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Phan Thanh Hậu · Phan Thanh Hậu 05:29 18/10/2020

Hôm nay tôi gặp sự cố dưới đây sau khi nâng cấp dự án của mình từ Laravel 7lên Laravel 8và cập nhật nó trực tuyến trên máy chủ.

Trait 'Illuminate\Database\Eloquent\Factories\HasFactory' not found

Ngay cả khi tôi đã cập nhật composer.jsonchỉ thị autoload được @lagbox đưa ra trong câu trả lời nhưng nó không giải quyết được vấn đề cho tôi.

Cuối cùng tôi đã cập nhật vendorsthư mục hoàn chỉnh trực tuyến đã giải quyết được sự cố của tôi.

-1 hữu ích 3 bình luận chia sẻ

answer

Hasfactory Laravel là gì

Trịnh Hồng Công · Trịnh Hồng Công 07:23 03/06/2021

Thêm điều này vào AppServiceProvider::boot()để ngăn không gian tên đoán mô hình.

Factory::guessFactoryNamesUsing(function (string $modelName) { return 'Database\\Factories\\' . Arr::last(explode('\\', $modelName)) . 'Factory'; });

-1 hữu ích 0 bình luận chia sẻ