Laravel 5 默认在应用程序文件夹中具有 ORM 模型。我想将它们移至应用程序/模型中。当我这样做时,就再也找不到这些类了。
如何让 Laravel 从 app/models 中找到 Eloquent ORM 模型?
假设您要将模型移至
app/Models
对于每个型号的更改:
namespace App;
到
namespace App\Models;
检查这些文件并特别搜索
app\User
app/Http/Controllers/Auth/RegisterController.php
config/auth.php
config/services.php
database/factories/ModelFactory.php
database/factories/UserFactory.php
并将
App/ModelExample
更改为 App/Models/ModelExample
奔跑
composer dump-autoload
只需创建一个名为
Models
的文件夹并将文件移入其中。之后,将模型的命名空间从 App
更改为 App\Models
(同时更新用法)并运行 composer dump-autoload
。
将
"app/models"
添加到composer.json的类映射自动加载部分
"autoload": {
"classmap": [
"database",
"app/models"
]
}
移动模型文件夹中的所有文件后。你需要做的是运行:
composer dump-autoload
这对我有用。 :)
完成@Saint Play步骤后。我必须做
php artisan config:clear
。然后就成功了!
您需要通过以下方式在模型中引用您的工厂:
/**
* Create a new factory instance for the model.
*
* @return ArticleFactory
*/
protected static function newFactory(): ArticleFactory
{
return ArticleFactory::new();
}
并在您的工厂中通过
protected $model
定义您的模型,如下所示:
class ArticleFactory extends Factory
{
protected $model = Article::class;
public function definition(): array
{
return [
'user_id' => User::factory()->create()->id,
'slug' => $this->faker->unique()->slug,
// and other fields
];
}
}