我最近升级到了 Laravel 8,但现在收到一个警告:
方法 'loadFactoriesFrom' 已经过时
我的文件结构如下:
myapp/
├── packages/
│ ├── package-1/
| | |── src/
| | | |── databases/
| | | | |── factories
| | | | | |── PackageModel11
| | | | | |── PackageModel12
| | | | |── Package1ServiceProvider
| | | | └── migrations
| | | |── models/
| | | |── controllers/
| | | |── migrations/
| | | └── /
| | |── tests/
| | |── composer.json/
│ ├── app
│ ├── database/
│ ├── resources/
│ └── public/
为了加载我的自定义程序包,我使用各种函数。
<?php
namespace MyName\Package1;
use Illuminate\Support\ServiceProvider;
class Package1ServiceProvider extends ServiceProvider
{
public function boot()
{
$this->loadFactoriesFrom(['database/factories']);
$this->loadRoutesFrom(__DIR__.'/routes.php');
$this->loadMigrationsFrom(__DIR__.'/migrations');
$this->loadViewsFrom(__DIR__.'/views', '');
$this->publishes([
__DIR__.'/views' => base_path('resources/views'),
]);
}
public function register()
{
// Register controllers Here
}
}
现在loadFactoriesFrom
已经被弃用,我如何加载这些工厂呢?
更新
我在这里找到了如何连接模型和工厂,并且他们记录了如何重写newFactory()
函数。
所以我在我的测试中有以下代码:
public function testWithPermissionUserCanSaveNewOnlineAssessment()
{
$topic = ELearningTopic::factory()->create();
$this->actingAs($this->user, 'api')
->post('api/e-learning/course-content/topics/.' . $topic->id . './online-assessments', [])
->assertStatus(401);
}
我的工厂
class ELearningTopicFactory extends Factory
{
public function definition()
{
return [
'name' => 'Some name'
];
}
}
我的模型
use HasFactory;
protected static function newFactory()
{
return ELearningTopicFactory::new();
}
现在我遇到以下错误
找不到类 'App\ELearningTopic'
我可能缺少什么?为什么模型类没有被覆盖?