我开始使用Laravel 5,作为第一项业务,我想将所有模型移动到名为Models的文件夹中。
但是如何在不指定命名空间的情况下访问那些?如下所示?:
...
class UserRolesTableSeeder extends Seeder {
public function run()
{
DB::table('user_roles')->delete();
App\Models\UserRoles::create(['name' => 'CREATE_USER']);
}
}
答案 0 :(得分:4)
进入你的composer.json并在“autoload”结束时添加:“classmap”这一行“app / models”。这样你就告诉laravel自动加载那些clases。之后,运行一个作曲家更新,它应该可以工作。
您还可以创建服务提供程序以访问没有名称空间的模型。
要创建服务提供商,您需要执行以下操作:
1)在models目录中创建一个文件,并将其命名为ModelsServiceProvider.php
2)在里面写下这段代码
<?php
namespace App\Models;
use Illuminate\Support\ServiceProvider;
class ModelsServiceProvider extends ServiceProvider {
public function register()
{
$this->app->booting(function()
{
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('UserRoles', 'App\Models\UserRoles');
});
}
3)进入app / config / app.php并在providers数组下添加此行'App \ Models \ ModelsServiceProvider'
您还可以直接为app / config / app.php中的别名数组下的类添加别名。
答案 1 :(得分:0)
或者,您可以像以前一样将模型加载到全局命名空间中!反对文档有点可怕但到目前为止我们没有任何问题。
要确保您的模型仍然加载,您只需要添加对composer.json的引用:
(假设你的命名空间是App \ Models)
"autoload": {
"classmap": [
...
"app/Models/"
],
...
"": [
"app/Models/"
]
请务必运行composer dump-autoload