2014-02-19 4 views
0

Я хочу создать класс BaseMigration, как в this tutorial. Я сохранил его как app/database/migrations/BaseMigration.php и распространить его в других моих миграциях, но когда я пытаюсь запустить мои миграции через php artisan migrate я получаю следующее сообщение об ошибке:Класс Laravel включает в себя пути

PHP Fatal error: Class 'BaseMigration' not found in ...\app\database\migrations\2014_02_19_071702_create_users_table.php on line 6

Очевидно, что это возникают проблемы самозарядного его. Как сообщить Laravel, где его найти, или куда я должен переместить его так, чтобы его можно было найти?

+2

Просто запустив 'композитор дамп-автозагрузка 'похоже, сделал трюк на самом деле. – mpen

+0

@alexrussell: Да .. если у меня есть подробный ответ, который, я уверен, верен, тогда я обычно отвечу на свой вопрос и соглашусь с ним. В противном случае я склонен публиковать свои выводы в качестве комментариев и позволять кому-то еще претендовать на кредит, если они хотят потратить время, чтобы дать правильный ответ :-) Ответ Антонио ниже, например, гораздо более подробный и информативный, чем все, что у меня было бы придумайте. – mpen

+0

Достаточно честный. Хорошо знать протокол опытного участника. Обычно я обычно не отвечаю на эти типы вопросов, опасаясь выглядеть как кто-то, кто просто хочет получить репутацию для уже предоставленного ответа. Как вы говорите, нет никакого вреда в предоставлении ответа и более подробной информации для остальной части сообщества. – alexrussell

ответ

2

Обычно

composer dump-autoload 

исправления тех рода ошибок, но иногда это не делает.

Чтобы понять, если проблема не в Laravel, но в автозагрузке (Composer или даже PHP), возьмите смотреть файлы в

vendor/composer/* 

Если файл не используется PSR-0, PSR- 4, ни файл самозарядные, он должен быть

vendor/composer/autoload_classmap.php 

Если ваш класс файл в списке, проблема в вашем коде, вы ссылаться на него неправильно. В этих файлах вы также найдете способ, которым вы должны ссылаться на него, например, если у вас есть пространство имен, установленное на нем, вам придется использовать его так, как он отображается в этих файлах.

Если его нет в списке, то проблема заключается в парне, ответственного за самозарядных вещи: Композитор (может быть, даже PHP), и вы можете обновить его, чтобы попытаться это исправить:

rm -rf vendor 
rm composer.lock 
composer install 
Смежные вопросы