2015-04-17 119 views
0

嗨,任何人都可以爲我澄清這一點。我有一個相當大的Laravel 4應用程序使用幾個模型。我想升級到L5,只想在控制器中使用相同的模型調用。 例如Laravel 4至5款

Course:: 
\Course:: //if controller in a deeper folder 

課程模型在App/Models中。我試過了一個作曲家地圖應用/模型,但無濟於事。

謝謝

回答

0

這就是命名空間的工作方式。如果指定一個類,PHP將始終搜索它相對於到當前名稱空間。除非你在前面加上一個反斜槓和使用完整路徑或者在你的文件的開頭添加一個import語句:

namespace App\Http\Controllers; 

use App\Models\Course; 

class ... 

或者

\App\Models\Course::all(); 

我要補充一點,許多編輯器和IDE能夠自動解決和導入類,所以使用合適的工具,它不是那麼繁瑣...

1

我不知道其他人。但在安裝Laravel 5時,我的模型直接在app文件夾中定義。 app目錄的psr-4命名空間爲App。然後

composer.json

"autoload": { 
    ... 
    "psr-4": { 
     "App\\": "app/" 
    } 
} 

模型是App命名空間下定義。例如

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Course extends Model { 

} 

所以,你可以:

1:使用的完整路徑,只要你使用它的模式:使用它像以前use模型:

\App\Course::all(); 

2您通常會:

namespace Your\Namespace; 

use App\Course; 

class YourClass { 

    public function yourFunction() 
    { 
     Course::all(); 
    } 

} 

3:創建一個名爲Models文件夾,把你的模型在那裏,並確保他們的命名體現了路徑(然後在選項1調用模型等,2):

// app/Models/Course.php 
namespace App\Models; 

use Illuminate\Database\Eloquent\Model; 

class Course extends Model { 

} 

例如

\App\Models\Course::all(); 

namespace Your\Namespace; 

use App\Models\Course; 

class YourClass { 

    public function yourFunction() 
    { 
     Course::all(); 
    } 

}