2015-04-16 17 views
24

Tôi có một thư mục có tên models bên trong app/ nơi tôi đặt tất cả các lớp mô hình của mình. Bây giờ tôi muốn thay đổi thư mục nơi lệnh sau xuất ra các lớp được tạo raThư mục Mô hình Laravel 5

php artisan make:model SomeModel 

Trả lời

39

Bạn không thể và nếu bạn đang nhảy vào phiên bản vũ trụ của Laravel, bạn không nên. Laravel 5 cung cấp, và giả định, một quy ước đặt tên PSR-4 cho tất cả các tệp lớp của nó. Điều này có nghĩa là các mô hình (và tất cả các lớp) nên được đặt dựa trên tên đầy đủ của họ là.

Khi bạn nói

php artisan make:model SomeModel 

Bạn đang thực sự tạo ra một mô hình với tên đầy đủ của App\SomeModel, vì vậy artisan tạo ra các tập tin sau đây.

app/SomeModel.php 

Nếu bạn nói

php artisan make:model 'Test\SomeModel' 

bạn muốn được tạo ra một mô hình với đầy đủ tên App\Test\SomeModel, và Laravel sẽ tạo ra các tập tin sau đây

app/Test/SomeModel.php 

Vì vậy, của đầy đủ của nó mô hình của bạn tên lớp (bao gồm không gian tên) xác định vị trí tệp định nghĩa lớp.

+0

Tôi đã thử điều này trong Laravel 5 và khi đưa ra một đường dẫn cho Mod el tập tin, tôi đã phải đề cập đến con đường mà không có dấu nháy đơn như bạn đã đề cập. Điều này làm việc cho tôi: 'php artisan make: model Test \ SomeModel' – Neel

+1

@Alan: Có lý do cụ thể nào để xóa thư mục mô hình khỏi Laravel 5 không? – Ashish

+0

@Ashish Tuân thủ các tiêu chuẩn PHP cho các không gian tên và tính nhất quán của việc có tất cả các lớp ứng dụng tự động tải theo cùng một cách. –

7

tôi thấy nó nên là:

php artisan make:model ModelFolder\\SomeModel 
+4

thực sự nó sẽ có một dấu gạch chéo ngược –

+0

không hoạt động với một dấu chéo ngược – fdrv

+0

Điều đó rất có thể phụ thuộc vào thiết bị đầu cuối của bạn ...? –

0

Nếu bạn muốn tạo mô hình bằng tay trên thư mục cụ thể. Ví dụ nếu bạn muốn tạo mô hình info vào thư mục Models. Tạo tệp có tên info.php các thư mục bên trong Mô hình mà bạn đã tạo trước đó. Dưới đây là bạn nên viết mã như thế này trong info.php

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

Tất nhiên bạn cũng có thể sử dụng Artisan lệnh php artisan make:model "Models\Info"

Nếu bạn muốn gọi mô hình mà Info bạn tạo một cái nhìn

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

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

Nó sẽ hiển thị tất cả tên của người dùng

Các vấn đề liên quan