作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近升级到 Laravel 8 但现在我收到警告
Method 'loadFactoriesFrom' is deprecated
我的文件结构如下
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
已弃用,我该如何加载这些工厂?
我在这里找到了如何做 connect models and Factories并且他们记录覆盖 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();
}
现在我得到下面的错误
Class 'App\ELearningTopic' not found
我可能会遗漏什么?为什么不覆盖模型类
最佳答案
Laravel 8 改变了工厂的工作方式。
无论如何,如果你想在 laravel 8 中使用旧工厂风格,只需安装 laravel legacy-factories
这个包为 Laravel 8.x+ 提供了对上一代 Laravel 工厂(<= 7.x)的支持。
有关此问题的更多详细信息,请参阅 github link .
关于php - 方法 'loadFactoriesFrom' 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66867068/
我是一名优秀的程序员,十分优秀!