php 将Laravel 5 Eloquent模型移动到自己的目录中

edqdpe6u  于 2023-10-15  发布在  PHP
关注(0)|答案(6)|浏览(114)

Laravel 5默认在app文件夹中有ORM模型。我想把这些移到应用程序/模型中。当我这样做的时候,这些类就找不到了。
如何让Laravel从app/models中找到Eloquent ORM模型?

px9o7tmv

px9o7tmv1#

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.恭喜!

wbgh16ku

wbgh16ku2#

只需创建一个名为Models的文件夹并将文件移动到其中。之后,将模型的名称空间从App更改为App\Models(同时更新用法)并运行composer dump-autoload

oxcyiej7

oxcyiej73#

"app/models"添加到composer.json的classmap autoload部分

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

3vpjnl9f4#

移动模型文件夹中的所有文件后。你需要做的是运行:
composer dump-autoload
这对我很有效。:)

omtl5h9j

omtl5h9j5#

在做了@Saint Play步骤之后。我不得不做php artisan config:clear。那就成功了!

ewm0tg9j

ewm0tg9j6#

你需要在模型中引用你的工厂:

/**
     * 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
        ];
    }
}

相关问题