Intereting Posts
Объект пуст в formModifier по событиям формы почему мой поисковый код не работает в Internet Explorer suds.TypeNotFound: Тип не найден: 'MerchantCode' Проверьте тип файла (FLV) перед загрузкой файла PHP во временную папку, только прочитав только 3 байта файла Какие коды могут быть в транзакциях PDO? Продолжайте получать «Ежедневный лимит неисполненного использования превышен. Продолжение использования требует регистрации "при попытке Google плюс вход в мое веб-приложение Установить переменную сеанса с помощью javascript в PHP Функция substring_index в доктрине ORM сеанс laravel, возвращающий нуль, Ошибка каждый второй раз, когда я делаю XMLHttpRequest в php-файл, используя dotnet Регулярное выражение для поиска атрибута «src» элемента HTML «img» в PHP Как сделать SELECT в PHP / MySQL нечувствительным? Не помогает ли доступная форма входа в систему сдерживать ботов? Подключение к websocket с PHP-клиентом Простое, но тяжелое приложение, потребляющее много ресурсов. Как оптимизировать?

Laravel – модельный класс не найден

При запуске работы с моделями я получил следующую ошибку

Класс Post не найден.

Все, что я сделал:
– Создал модель с командой php artisan make:model
– Пытался получить все записи из табличных posts с помощью echo Post::all()

Я использовал следующий код:

router.php

 Route::get('/posts', function(){ $results = Post::all(); return $results; }); 

Post.php

 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $table = 'posts'; } 

Что я пробовал
– Переименование класса
– Dump-autoload ( класс модели Laravel 4 не найден )

Laravel 5 способствует использованию пространств имен для таких вещей, как модели и контроллеры. Ваша модель находится под пространством имен App , поэтому ваш код должен называть его следующим образом:

 Route::get('/posts', function(){ $results = \App\Post::all(); return $results; }); 

Как уже упоминалось в комментариях, вы также можете use или импортировать пространство имен в файл, поэтому вам не нужно указывать полный путь, например:

 use App\Post; Route::get('/posts', function(){ $results = Post::all(); return $results; }); 

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

 use App\Post as PostModel; Route::get('/posts', function(){ $results = PostModel::all(); return $results; }); 

Подробнее об импорте и псевдониме имен здесь: http://php.net/manual/en/language.namespaces.importing.php

У меня было такое же сообщение «Class [class name] not found», но это не было проблемой пространства имен. Все мои пространства имен были настроены правильно. Я даже попробовал composer dump-autoload и это не помогло мне.

Удивительно (для меня) я тогда сделал composer dump-autoload -o который, согласно помощи композитора, «оптимизирует пакеты PSR0 и PSR4, которые тоже загружаются с помощью карт классов, хороших для производства». Каким-то образом это делало композитора для правильного поведения и включения класса в файл autoload_classmap.php.

У меня была такая же ошибка в Laravel 5.2, оказалось, что пространство имен неверно в определении класса модели.

Я создал свою модель с помощью команды:

 php artisan make:model myModel 

По умолчанию Laravel 5 создает модель под папкой App , но если вы хотите переместить модель в другую папку, как я, вы также должны изменить пространство имен внутри определения модели:

 namespace App\ModelFolder; 

Чтобы включить имя папки при создании модели, вы можете использовать:

 php artisan make:model ModelFolder\myModel 

Как сказал @bulk, он использует пространства имен.

Я рекомендую вам начать использовать IDE, он предложит вам импортировать все необходимые пространства имен ( \App\Post в этом случае).

Если после изменения пространства имен и config/auth.php он все равно не работает, вы можете попробовать следующее:

  1. В файле vendor/composer/autoload_classmap.php измените строку App\\User' => $baseDir . '/app/User.php', App\\User' => $baseDir . '/app/User.php', в App\\Models\\User' => $baseDir . '/app/Models/User.php', App\\Models\\User' => $baseDir . '/app/Models/User.php',

  2. В начале файла app/Services/Registrar.php измените «использовать App \ User» в «App \ Models \ User»