Bài viết Câu hỏi About RongvangIT
profile Pic
1
@kiyoshi
   325 Lượt xem
Q&A

target class tableseeder does not exist Laravel 8

Q&A

Việc cần giải quyết

Chào mọi người
Mình đang cần chạy seed trong Laravel 8 như lệnh dưới:

php artisan db:seed

Mình đã khai báo đầy đủ file DatabaseSeeder.php cũng như các file chứa các class dùng để seed. Tuy nhiên app báo lại lỗi không tồn tại class trong file seed, mặc dù file sheet đã tồn tại.
Ai biết cách giải quyết xin chỉ giùm mình

Nội dung lỗi

 Illuminate\Contracts\Container\BindingResolutionException

  Target class [Database\Seeders\AcHolidayTypes] does not exist.

  at D:\_dev\sample\vendor\laravel\framework\src\Illuminate\Container\Container.php:879
    875
    876         try {
    877             $reflector = new ReflectionClass($concrete);
    878         } catch (ReflectionException $e) {
   879             throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
    880         }
    881
    882         // If the type is not instantiable, the developer is attempting to resolve
    883         // an abstract type such as an Interface or Abstract Class and there is

  1   D:\_dev\sample\vendor\laravel\framework\src\Illuminate\Container\Container.php:877
      ReflectionException::("Class Database\Seeders\AcHolidayTypes does not exist")

  2   D:\_dev\sample\vendor\laravel\framework\src\Illuminate\Container\Container.php:877
      ReflectionClass::__construct("Database\Seeders\AcHolidayTypes")

Trả lời

Copy link

Lỗi này cho biết rằng Laravel đang cố gắng giải quyết một lớp có tên là Database\Seeders\AcHolidayTypes, nhưng nó không thể tìm thấy lớp đó. Dưới đây là một số bước bạn có thể thực hiện để sửa lỗi này:

  1. Kiểm Tra Namespace và Autoloading của Lớp: Đảm bảo rằng namespace và tên lớp trong tệp seeder của bạn (AcHolidayTypes.php) phù hợp với đường dẫn thực tế của tệp và tên lớp. Đồng thời, đảm bảo rằng tệp này đã được bao gồm trong autoloading của Composer.

    Ví dụ, tệp seeder AcHolidayTypes.php của bạn nên nằm ở đường dẫn database/seeders/AcHolidayTypes.php và định nghĩa lớp nên giống như sau:

    namespace Database\Seeders;
    
    use Illuminate\Database\Seeder;
    
    class AcHolidayTypes extends Seeder
    {
        // Logic seeder của bạn ở đây
    }
    
  2. Composer Dumpautoload: Chạy lệnh sau để tạo lại autoloader của Composer:

    composer dumpautoload
    

    Lệnh này sẽ xây dựng lại autoloader của Composer dựa trên trạng thái hiện tại của dự án.

  3. Kiểm Tra Tham Chiếu Lớp Seeder: Đảm bảo rằng bạn đang tham chiếu đúng lớp seeder trong tệp seeder cơ sở dữ liệu của bạn (thường là DatabaseSeeder.php). Tham chiếu lớp nên giống như sau:

    use Database\Seeders\AcHolidayTypes;
    
    // ...
    
    $this->call(AcHolidayTypes::class);
    
  4. Tên Tệp và Lớp: Kiểm tra kỹ xem có chính tả hoặc vấn đề về kiểu chữ không trong tên tệp và tên lớp hay không. Laravel sử dụng autoloading theo tiêu chuẩn PSR-4, vì vậy tên tệp và tên lớp nên tuân theo tiêu chuẩn PSR-4.

Sau khi thực hiện các kiểm tra và sửa lỗi này, hãy thử chạy lại seeder cơ sở dữ liệu của bạn. Nếu vấn đề vẫn tồn tại, có thể có vấn đề sâu hơn với cài đặt Laravel hoặc cấu trúc dự án của bạn cần được kiểm tra kỹ hơn.

profile Pic
2
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic