Laravel 模型目录和命名空间
Laravel model directory and namespace
我从 Laravel 5 开始,作为首要任务,我想将所有模型移动到一个名为 Models 的文件夹中。
但是我如何在不指定名称空间的情况下访问它们,如下所示?:
...
class UserRolesTableSeeder extends Seeder {
public function run()
{
DB::table('user_roles')->delete();
App\Models\UserRoles::create(['name' => 'CREATE_USER']);
}
}
进入您的 composer.json 并在 "autoload" 末尾添加:"classmap" 这一行 "app/models"。这样你就告诉 laravel 自动加载这些类。之后,运行 作曲家更新,它应该可以工作。
您还可以创建服务提供者来访问没有命名空间的模型。
要创建服务提供商,您需要执行以下操作:
1) 在您的模型目录中创建一个文件并将其命名为 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.
内的别名数组下直接添加 类 的别名
或者,您可以像以前一样将模型加载到全局命名空间中!违背文档有点可怕,但到目前为止我们还没有遇到任何问题。
为确保您的模型仍然加载,您只需添加对 composer.json:
的引用
(假设您的命名空间是 App\Models)
"autoload": {
"classmap": [
...
"app/Models/"
],
...
"": [
"app/Models/"
]
一定要运行composer dump-autoload
我从 Laravel 5 开始,作为首要任务,我想将所有模型移动到一个名为 Models 的文件夹中。
但是我如何在不指定名称空间的情况下访问它们,如下所示?:
...
class UserRolesTableSeeder extends Seeder {
public function run()
{
DB::table('user_roles')->delete();
App\Models\UserRoles::create(['name' => 'CREATE_USER']);
}
}
进入您的 composer.json 并在 "autoload" 末尾添加:"classmap" 这一行 "app/models"。这样你就告诉 laravel 自动加载这些类。之后,运行 作曲家更新,它应该可以工作。
您还可以创建服务提供者来访问没有命名空间的模型。
要创建服务提供商,您需要执行以下操作:
1) 在您的模型目录中创建一个文件并将其命名为 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.
内的别名数组下直接添加 类 的别名或者,您可以像以前一样将模型加载到全局命名空间中!违背文档有点可怕,但到目前为止我们还没有遇到任何问题。
为确保您的模型仍然加载,您只需添加对 composer.json:
的引用(假设您的命名空间是 App\Models)
"autoload": {
"classmap": [
...
"app/Models/"
],
...
"": [
"app/Models/"
]
一定要运行composer dump-autoload