将 Laravel 5 Eloquent 模型移至自己的目录中

问题描述 投票:0回答:6

Laravel 5 默认在应用程序文件夹中具有 ORM 模型。我想将它们移至应用程序/模型中。当我这样做时,就再也找不到这些类了。

如何让 Laravel 从 app/models 中找到 Eloquent ORM 模型?

php eloquent laravel-5
6个回答
74
投票

Laravel 5.6+ 的解决方案


1.将文件移动到新目录

假设您要将模型移至

app/Models

2.更改模型的命名空间

对于每个型号的更改:

namespace App;

namespace App\Models;

3.更改其他文件中的引用

检查这些文件并特别搜索

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

4.自动加载文件

奔跑

composer dump-autoload

5.恭喜!


37
投票

只需创建一个名为

Models
的文件夹并将文件移入其中。之后,将模型的命名空间从
App
更改为
App\Models
(同时更新用法)并运行
composer dump-autoload


16
投票

"app/models"
添加到composer.json的类映射自动加载部分

"autoload": {
    "classmap": [
        "database",
        "app/models"
    ]
}

3
投票

移动模型文件夹中的所有文件后。你需要做的是运行:


composer dump-autoload

这对我有用。 :)


1
投票

完成@Saint Play步骤后。我必须做

php artisan config:clear
。然后就成功了!


0
投票

您需要通过以下方式在模型中引用您的工厂:

    /**
     * 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
        ];
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.