【问题标题】:Laravel 5 Models FolderLaravel 5 模型文件夹
【发布时间】:2015-06-23 14:36:49
【问题描述】:

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

php artisan make:model SomeModel

【问题讨论】:

    标签: php laravel model laravel-artisan


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 欢迎来到堆栈溢出!这似乎更像是一个评论。请不要将 cmets 写成答案。
        【解决方案4】:

        如果您想在特定文件夹上手动创建模型。例如,如果您想创建模型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;
        }
        

        它会显示所有用户的名字

        【讨论】:

          【解决方案5】:

          我发现它应该是:

          php artisan make:model ModelFolder\\SomeModel
          

          【讨论】:

          • 其实应该有一个反斜杠
          • 这很可能取决于您的终端...?
          • 查看 Laravel 源代码,如果您将路径指定为 app/myspace/etc Laravel 在内部将所有 / 更改为 \` using str_replace()`,因此使用单正斜杠 'OR' 双反斜杠(即逃脱)应该可以工作,这是你的选择!
          • 我尝试使用一个斜杠,但它创建了带有文件夹名称的文件。虽然它在 laravel 6 中使用双斜线工作正常。
          【解决方案6】:

          你不能,而且,如果你正在研究 Laravel 的宇宙版本,你不应该这样做。 Laravel 5 为其所有类文件提供并假设 PSR-4 命名约定。这意味着模型(和所有类)应根据其类全名放置。

          当你说

          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
          

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

          【讨论】:

          • 我在 Laravel 5 中试过这个,在为模型文件提供路径时,我不得不提到没有你提到的单引号的路径。这对我有用:php artisan make:model Test\SomeModel
          • @Alan: 从 Laravel 5 中删除模型目录有什么具体原因吗?
          • @Ashish 符合 PHP 命名空间标准,以及所有应用程序类以相同方式自动加载的一致性。
          猜你喜欢
          • 2015-05-14
          • 1970-01-01
          • 1970-01-01
          • 2015-08-08
          • 1970-01-01
          • 2015-05-07
          • 2015-08-15
          • 2015-04-15
          • 2015-03-12
          相关资源
          最近更新 更多