2015-09-15 43 views
-3

我是Laravel的新手,但我遇到了一些問題。 在Laravel 4中一切正常。我爲數據庫配置做了所有步驟。 ,創建模型和一切正常。Laravel 5和Laravel 5.1「Class'Model Name'not found」,有沒有更好的解決方案?

在Laravel 5/5.1沒有文件夾模式,默認模式存儲在app文件夾,但如果我創建模式「使用example.php」:

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Example extends Model 
{ 
protected $table = 'examples'; 
} 

,並設法得到它的路線。 php:

Route::get('/', function(){ 

$example = new Example; 

return $example::all(); 
}); 

我看到一個錯誤:「Class'Example'not found」。 我找到了解決辦法只是爲了在route.php補充​​:

use App\Example; 

但是,有沒有更好的解決辦法? 我必須爲每個模型添加'使用'? 對於例如,如果我有2-3-4-5-等機型我必須鍵入:

use App\Example; 
use App\Example1; 
use App\Example2; 

是的,我搜索Laravel文件,其他論壇等,如果你不喜歡Laravel 5.1文件相同的步驟 - 數據庫配置,創建模型,使用它,你會得到這個錯誤。

爲composer.json添加路徑「autoload」和 - composer dump-autoload沒有幫助。

+0

然後,您必須使用:「使用App \ Models \ Example;」,對於每個模型,我要求其他。 –

+0

你必須習慣它,它會給你的代碼帶來大量的組織。 – user2094178

回答

0

想象一下,您有兩個類Example,一個是模型,另一個是其他位置的其他位置。
PHP無法知道您正在嘗試使用哪一個。
這就是爲什麼如果你嘗試在像routes.php這樣的文件中使用一個類,它將無法找到它,除非你指定它或使用它的完整路徑,如App\Model\Example

現在,一個很好的問題是爲什麼你在routes.php裏面有邏輯?
爲了代碼的清晰和概念上的分離,你不可能寫出實際的邏輯(或視圖)或者除了該文件中路由的定義之外的任何東西。

建議您實際重構您的代碼並將處理請求的每組邏輯移動到實際的控制器,然後定義哪個控制器處理哪個路徑。

這樣,你將結束沒有use聲明那裏,你routes.php實際上會很乾淨,易於閱讀,你會落得這樣的:

Route::resource('example', 'ExampleController'); 
Route::resource('admin', 'AdminController'); 
Route::resource('user', 'UserController'); 

這也將告訴你在哪裏找到什麼邏輯。

0

ü也可以使用直接的方法是這樣

Route::get('/', function() 
{ 
$example = new App\Example; 
return $example::all(); 
}); 

但我仍希望的默認方法。正如你現在看到的,我每次使用模型時都必須在前面App

相關問題