Laravel 5 模型文件夹

Laravel 5 Models Folder

我在 app/ 中有一个名为 models 的目录,我将所有模型 类 放在其中。现在我想更改以下命令输出生成的目录 类

php artisan make:model SomeModel

你不能,如果你坚持 Laravel 的宇宙版本,你不应该。 Laravel 5 为其所有 class 文件提供并采用 PSR-4 命名约定。这意味着模型(以及所有 classes)应该根据它们的 完整 class 名称.

放置

当你说

php artisan make:model SomeModel

您实际上是在创建一个全名为 App\SomeModel 的模型,因此 artisan 创建了以下文件。

app/SomeModel.php

如果你说

php artisan make:model 'Test\SomeModel'

您将创建一个全名为 App\Test\SomeModel 的模型,并且 Laravel 将创建以下文件

app/Test/SomeModel.php

因此,您模型的完整 class 名称(包括命名空间)决定了 class 定义文件的位置。

我发现应该是:

php artisan make:model ModelFolder\SomeModel

如果您想在特定文件夹上手动创建模型。例如,如果您想将模型 info 创建到文件夹 Models 中。在您之前创建的文件夹模型中创建名为 info.php 的文件。这是你应该在 info.php

中编写这样的代码
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Info extends Model
{
    // your code
    protected $table = 'tb_users';
}

当然你也可以使用Artisan命令 php artisan make:model "Models\Info"

如果你想调用那个模型Info你创建一个视图

<?php
$users = App\Models\Info::all();

foreach ($users as $user) {
    echo $user->name;
}

它将显示所有用户名

您还可以查看创建模型时创建的 www/yourfolder/database/php 文件。

如果你太懒不想每次都输入Models这个词,你可以试试我的https://github.com/bangnokia/laravel-models-folder

使用中等 https://medium.com/@codingcave/organizing-your-laravel-models-6b327db182f9 上的本教程对此进行研究。 它是扩展 ModelMakeCommand 的更好解决方案,这样您将 运行 php artisan make:model SomeModel 而不是 php artisan make:model 'Test\SomeModel' 并且您仍然会获得 'Test\SomeModel' 名称空间 SomeModel.php'Test' 文件夹中