2015-04-16 15 views
24

Ich habe ein Verzeichnis namens models innerhalb app/, wo ich alle meine Modellklassen platzieren. Jetzt möchte ich das Verzeichnis ändern, in dem der folgende Befehl gibt die erzeugten KlassenLaravel 5 Modelle Ordner

php artisan make:model SomeModel 

Antwort

39

Sie können nicht, und wenn Sie auf Laravel Version des Universums sind behauen, Sie sollten nicht. Laravel 5 stellt eine PSR-4-Benennungskonvention für alle seine Klassendateien bereit und geht davon aus. Dies bedeutet, dass Modelle (und alle Klassen) basierend auf ihrem vollständigen Klassennamen platziert werden sollten.

Wenn Sie

sagen
php artisan make:model SomeModel 

Sie sind tatsächlich ein Modell mit dem vollständigen Namen von App\SomeModel erstellen, so schafft artisan die folgende Datei.

app/SomeModel.php 

Wenn Sie sagte

php artisan make:model 'Test\SomeModel' 

Sie ein Modell mit dem vollständigen Namen würde die Schaffung App\Test\SomeModel und Laravel würde erstellen Sie die folgende Datei

app/Test/SomeModel.php 

So sein Modell zum vollständigen Klassenname (Namespace eingeschlossen), der bestimmt, wo sich die Klassendefinitionsdatei befindet.

+0

Ich versuchte dies in Laravel 5 und wenn Sie einen Pfad für Mod geben el datei, ich musste den Weg ohne die einfachen Anführungszeichen erwähnen, wie du erwähnt hast. Das funktionierte für mich: 'php artisan make: Modell Test \ SomeModel' – Neel

+1

@Alan: Gibt es einen bestimmten Grund für das Entfernen von Modellverzeichnissen von Laravel 5? – Ashish

+0

@Ashish Entspricht den PHP-Standards für Namespaces und der Konsistenz, alle Anwendungsklassen auf die gleiche Weise automatisch laden zu lassen. –

7

fand ich es sein sollte:

php artisan make:model ModelFolder\\SomeModel 
+4

eigentlich sollte es einen Backslash haben –

+0

funktioniert nicht mit einem Backslash – fdrv

+0

Das könnte sehr gut von Ihrem Terminal abhängen ...? –

0

Wenn Sie Modelle manuell auf bestimmten Ordner erstellen. Beispiel, wenn Sie das Modell info im Ordner Models erstellen möchten. Erstellen Sie eine Datei mit dem Namen info.php im Ordner Modelle, die Sie zuvor erstellt haben. Hier sind, sollten Sie Code wie folgt in info.php

<?php namespace App\Models; 
use Illuminate\Database\Eloquent\Model; 
class Info extends Model 
{ 
    // your code 
    protected $table = 'tb_users'; 
} 

Natürlich schreiben Sie auch Artisan Befehl php artisan make:model "Models\Info"

verwenden können, wenn Sie das Modell nennen wollen Info Sie eine Ansicht

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

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

Es werden alle Namen der Benutzer angezeigt