【发布时间】:2021-07-07 10:11:00
【问题描述】:
我正在我的项目中进行迁移,而不是运行php artisan migrate,而是运行php artisan migrate:fresh,然后清除了我所有的表和其中的数据。现在我的数据库有所有空白表,但现在当我再次尝试播种时遇到了问题。我可以使用自己制作的播种机对其进行播种,但我也在使用 voyager,但无法运行 voyager 播种机。
voyager docs 说我应该运行这个命令来运行 voyager 表的种子:
php artisan db:seed --class=VoyagerDatabaseSeeder
但是当我运行它时,它给了我以下错误:
Illuminate\Contracts\Container\BindingResolutionException
Target class [Database\Seeders\VoyagerDatabaseSeeder] does not exist.
at vendor/laravel/framework/src/Illuminate/Container/Container.php:835
831▕
832▕ try {
833▕ $reflector = new ReflectionClass($concrete);
834▕ } catch (ReflectionException $e) {
➜ 835▕ throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
836▕ }
837▕
838▕ // If the type is not instantiable, the developer is attempting to resolve
839▕ // an abstract type such as an Interface or Abstract Class and there is
+23 vendor frames
24 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
这就是我的目录的布局方式:
您可以看到VoyagerDatabaseSeeder.php 确实存在,但由于某种原因,laravel 不能播种它?有什么想法吗?
----------- 评论 [ composer dump-autoload ] -------------
这是composer dump-autoload的结果:
mobile-mastery-latest git:(enhancement/auth-user) ✗ composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: arrilot/laravel-widgets
Discovered Package: bumbummen99/shoppingcart
Discovered Package: cartalyst/stripe-laravel
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: intervention/image
Discovered Package: larapack/doctrine-support
Discovered Package: larapack/voyager-hooks
Discovered Package: laravel/tinker
Discovered Package: laravel/ui
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: tcg/voyager
Package manifest generated successfully.
Generated optimized autoload files containing 5855 classes
➜ mobile-mastery-latest git:(enhancement/auth-user) ✗ php artisan db:seed --class=VoyagerDatabaseSeeder
Illuminate\Contracts\Container\BindingResolutionException
Target class [Database\Seeders\VoyagerDatabaseSeeder] does not exist.
at vendor/laravel/framework/src/Illuminate/Container/Container.php:835
831▕
832▕ try {
833▕ $reflector = new ReflectionClass($concrete);
834▕ } catch (ReflectionException $e) {
➜ 835▕ throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
836▕ }
837▕
838▕ // If the type is not instantiable, the developer is attempting to resolve
839▕ // an abstract type such as an Interface or Abstract Class and there is
+23 vendor frames
24 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
----------- 评论[添加use声明] -------------
这是航海者播种机:
<?php
use Illuminate\Database\Seeder;
use TCG\Voyager\Traits\Seedable;
class VoyagerDatabaseSeeder extends Seeder
{
use Seedable;
protected $seedersPath = __DIR__.'/';
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->seed('DataTypesTableSeeder');
$this->seed('DataRowsTableSeeder');
$this->seed('MenusTableSeeder');
$this->seed('MenuItemsTableSeeder');
$this->seed('RolesTableSeeder');
$this->seed('PermissionsTableSeeder');
$this->seed('PermissionRoleTableSeeder');
$this->seed('SettingsTableSeeder');
}
}
【问题讨论】:
-
如果你使用的是 laravel 8,那么在你的
VoyagerDatabaseSeeder.php文件的顶部添加这一行use Illuminate\Database\Seeder; -
@EsTeAa 已包含在文件中,我已将其添加到问题中