2015-04-16 60 views
24

我有一个名为models的目录在app/里面我放置了所有的模型类。现在我想改变所在的目录下面的命令输出生成的类Laravel 5 Models文件夹

php artisan make:model SomeModel 

回答

39

你不能,如果你砍来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 

因此,创建下列文件,其模型的全类名(包含名称空间),用于确定类定义文件的位置。

+0

我在Laravel 5中试过这个,当给Mod的路径el文件,我不得不提到没有像你提到的单引号的路径。这对我有用:'php artisan make:model Test \ SomeModel' – Neel

+1

@Alan:是否有任何具体的原因从Laravel 5中删除models目录? – Ashish

+0

@Ashish符合PHP标准的命名空间,以及使所有应用程序类以相同方式自动加载的一致性。 –

7

我觉得它应该是:

php artisan make:model ModelFolder\\SomeModel 
+4

实际上它应该有一个反斜杠 –

+0

不反映一个反斜杠 – fdrv

+0

这可能很好取决于您的终端...? –

0

如果你想在特定的文件夹手动创建模型。示例如果您想要将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'; 
} 

当然像这样写代码,你也可以使用工匠命令 php artisan make:model "Models\Info"

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

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

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

它会显示所有用户的名字