无法找到名称为 [default] [Modules\Brokerquotes\Entities\Insuree] 的工厂
Unable to locate factory with name [default] [Modules\Brokerquotes\Entities\Insuree]
我肯定有工厂
$factory->define(Modules\Brokerquotes\Entities\Insuree::class,....
在 DatabaseSeeder 中我有
factory("Modules\Brokerquotes\Entities\Insuree", 5)->create()-> ......
但是当我尝试使用 php artisan db:seed --class=....
直接调用播种器 class 时,我得到了主题错误
Unable to locate factory with name [default] [Modules\Brokerquotes\Entities\Insuree].
我试过composer dumpautoload
但还是不行
我只需要不时运行一些个人播种者。
我哪里做错了??
鉴于命名空间,我假设您正在使用 Asgard CMS 并且您已将 Insuree 模型工厂放在模块的工厂目录中。这不会起作用,因为默认情况下模型工厂的查找固定为 database_path('factories')
,请参阅工厂 class 中的以下内容:
/**
* Create a new factory container.
*
* @param \Faker\Generator $faker
* @param string|null $pathToFactories
* @return static
*/
public static function construct(Faker $faker, $pathToFactories = null)
{
$pathToFactories = $pathToFactories ?: database_path('factories');
return (new static($faker))->load($pathToFactories);
}
将模块工厂移动到项目的工厂目录:
<PROJECT>/
├── database/
│ └── factories/
│ └── InsureeFactory.php
└── Modules/
& 然后 re-run 你的播种机:
namespace Modules\Brokerquotes\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class BrokerquotesDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
factory(\Modules\Brokerquotes\Entities\Insuree::class, 5)->create();
}
}
Artisan 命令:
php artisan db:seed --class=Modules\Brokerquotes\Database\Seeders\BrokerquotesDatabaseSeeder
我遇到了同样的问题,更多的 'standard' 解决方案是:
在您的 [ModuleName]ServiceProvider.php 中添加 registerFactories
函数,如下所示:
public function boot()
{
$this->registerFactories();
...
...
}
并定义它:
public function registerFactories()
{
if (! app()->environment('production')) {
app(\Illuminate\Database\Eloquent\Factory::class)->load(__DIR__ . '/../Database/Factories');
}
}
我肯定有工厂
$factory->define(Modules\Brokerquotes\Entities\Insuree::class,....
在 DatabaseSeeder 中我有
factory("Modules\Brokerquotes\Entities\Insuree", 5)->create()-> ......
但是当我尝试使用 php artisan db:seed --class=....
直接调用播种器 class 时,我得到了主题错误
Unable to locate factory with name [default] [Modules\Brokerquotes\Entities\Insuree].
我试过composer dumpautoload
但还是不行
我只需要不时运行一些个人播种者。
我哪里做错了??
鉴于命名空间,我假设您正在使用 Asgard CMS 并且您已将 Insuree 模型工厂放在模块的工厂目录中。这不会起作用,因为默认情况下模型工厂的查找固定为 database_path('factories')
,请参阅工厂 class 中的以下内容:
/**
* Create a new factory container.
*
* @param \Faker\Generator $faker
* @param string|null $pathToFactories
* @return static
*/
public static function construct(Faker $faker, $pathToFactories = null)
{
$pathToFactories = $pathToFactories ?: database_path('factories');
return (new static($faker))->load($pathToFactories);
}
将模块工厂移动到项目的工厂目录:
<PROJECT>/
├── database/
│ └── factories/
│ └── InsureeFactory.php
└── Modules/
& 然后 re-run 你的播种机:
namespace Modules\Brokerquotes\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class BrokerquotesDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
factory(\Modules\Brokerquotes\Entities\Insuree::class, 5)->create();
}
}
Artisan 命令:
php artisan db:seed --class=Modules\Brokerquotes\Database\Seeders\BrokerquotesDatabaseSeeder
我遇到了同样的问题,更多的 'standard' 解决方案是:
在您的 [ModuleName]ServiceProvider.php 中添加 registerFactories
函数,如下所示:
public function boot()
{
$this->registerFactories();
...
...
}
并定义它:
public function registerFactories()
{
if (! app()->environment('production')) {
app(\Illuminate\Database\Eloquent\Factory::class)->load(__DIR__ . '/../Database/Factories');
}
}