2014-08-14 3 views
0

Мой пакет требует моделей, но я получаю сообщение об ошибке класса не нашел, почему я пытаюсь сделать:Модели в пакетах

MyModel::all(); 

Моя папка модели находится под ЦСИ и в моем файле composer.json я есть:

"autoload": { 
    "classmap": [ 
     "src/migrations", 
     "src/models" 
    ], 

Я также запустить:

composer dump-autoload 

Вот моя модель файла:

<?php 

class MyModel extends Eloquent { 


} 

Нужно ли использовать пространство имен, аналогичное моему пакету?

+0

Вы используете верстак? Если это так, то вам необходимо сбрасывать автозагрузку через мастеров: 'php artisan dump-autoload '. Или вы забыли добавить 'use your/namespace/MyModel;' в верхней части файла, где вы хотите использовать модель? –

+0

Я сделал оба, все еще не удается. Где моя модель должна быть точно, файловая структура мудрая? Внутри MyCorp/MyPackage/src/Models или MyCorp/MyPackage/src/MyCorp/MyPackage/Models – panthro

+0

Не имеет значения, потому что вы используете 'classmap', а не' psr-4'. Если вы запустите 'composer dump-autoload', то композитор создает карту классов, которая регистрирует вашу модель:' MyNameSpace \\ MyModel '=> $ vendorDir. '/MyCorp/MyPackage/src/Models/MyModel.php', ..' внутри файла: 'vendor/composer/autoload_classmap.php' –

ответ

0

Прежде всего, все классы пакетов должны иметь пространство имен, и вы должны знать, как работают пространства имен PHP. Для этого я рекомендую автозагрузку композитора psr-4.

Во-вторых, вам нужно использовать полные имена классов вместо глобальных псевдонимов пространства имен. Eloquent есть фактически Illuminate\Database\Eloquent\Model. Вы можете найти все псевдонимы в вашем файле app/config/app.php.

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