2015-04-17 3 views
0

Привет, кто-нибудь может это разъяснить для меня. У меня довольно большое приложение Laravel 4, использующее несколько моделей. Я хотел бы перейти на L5 и просто хотел бы использовать одни и те же вызовы модели в контроллерах. , например.Laravel 4 до 5 Модели

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

Модель курса в приложении/модели. Я пробовал композитор, сопоставляющий App/Models, но безрезультатно.

Thanks

ответ

0

Вот как работают пространства имен. Если вы укажете класс PHP, он всегда будет искать его относительно в текущем пространстве имен. Если вы не предварять обратной косой черты и использовать полный путь или добавить оператор импорта в начале файлов:

namespace App\Http\Controllers; 

use App\Models\Course; 

class ... 

Или

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

Я хотел бы добавить, что многие редакторы и Иды могут автоматически разрешать и импортировать классы, поэтому с правильными инструментами это не так громоздко ...

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: Используйте полный путь к модели, когда вы его используете:

\App\Course::all(); 

2:use вашей модели, прежде чем использовать его как вы обычно:

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(); 
    } 

} 
Смежные вопросы