Laravel: класс App \ Posts не существует

У меня столько раз возникала эта ошибка в Laravel, как при использовании классов моделей, которые говорят, что этот класс не существует, а он есть. один из них был, когда я запустил App\Post::count() с возиться и получил следующее:

PHP Fatal error: Class 'App/Post' not found in Psy Shell code on line 1

и один был, когда я пытался заполнить БД моделью. это содержание модели:

namespace App;    
use Illuminate\Database\Eloquent\Model;   
class Dog extends Model
{   
    //   
} 

а это сеялка:

<?php
use Illuminate\Database\Seeder;
 use \App\Dog;   
class DogsTableSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
    public function run()
    {
        Dog::query()->create(['name'=>'jack']);
    }
}

с этой ошибкой: Класс "Приложение \ Собака" не найден. и это для каждой модели, которую я создаю.
любое решение? (Laravel -V: 5.4, PHP -V: 7.2, веб-сервер Apache)

composer dumpautoload?
Marcin Orlowski 21.07.2018 22:21

@MarcinOrlowski да, но без эффекта

Faramarz 21.07.2018 22:26

где физически находится ваше приложение \ собака

abr 21.07.2018 22:48

По какому пути находится файл модели?

Taha Paksu 21.07.2018 22:49

@abr в каталоге / app по умолчанию

Faramarz 21.07.2018 22:59

@TahaPaksu в каталоге / app

Faramarz 21.07.2018 22:59

а имя файла?

lagbox 21.07.2018 23:05

@lagbox Post.php

Faramarz 21.07.2018 23:06

Вопрос, ваш php-файл начинается с <? Php и заканчивается?> Или это просто <?

abr 21.07.2018 23:09

@abr просто начинается с <? php

Faramarz 21.07.2018 23:10

Посмотрите, сможете ли вы создать собаку, используя: \ App \ Dog :: create (['name' => 'jack']); если вы все еще не можете это сделать, проверьте права доступа к файлам

abr 21.07.2018 23:13

Что вы вводите в Psy Shell?

abr 21.07.2018 23:16

Вызов изменения пространства имен @abr не работал, и даже 755 chmod не повлияли. редкая проблема :(

Faramarz 21.07.2018 23:18

@abr Приложение \ Post :: count ()

Faramarz 21.07.2018 23:21

Проверьте имя вашего файла, оно должно быть Post.php.

ako 21.07.2018 23:22

@ako да, это так.

Faramarz 21.07.2018 23:24

Абсолютно проблема с автозагрузчиком композитора, попробуйте composer dump-autoload. И запустите php artisan cache:clear.

ako 21.07.2018 23:27

где ты написал use App\Dog;? выше public function run или выше class? Вы можете добавить полный текст кода сидера?

num8er 21.07.2018 23:29

@ num8er конечно. я добавил.

Faramarz 21.07.2018 23:36

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

Faramarz 21.07.2018 23:37

установка, создание нового проекта такая же, как и запуск: rm -rf vendor && composer install

num8er 21.07.2018 23:38

@ num8er точно так же

Faramarz 21.07.2018 23:42

Вы пытаетесь загрузить \App\Dog, но имя вашего файла - Post.php ... переименуйте его в Dog.php или измените на \App\Post. Вы не можете иметь и то, и другое.

Chin Leung 22.07.2018 00:45

@ChinLeung нет, это два разных isuues

Faramarz 22.07.2018 00:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
24
3 742
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

На некоторых серверах вам нужно добавить к приложению префикс \ like: пространство имен \ App;

Также после вышеуказанного изменения:

  • Также дважды проверьте имя класса в модели
  • запустить composer dump-autoload
  • php artisan cache: очистить

класс не найден не имеет ничего общего с миграцией

abr 21.07.2018 23:34

правда, убраны лишние шаги

Josh 21.07.2018 23:39
Ответ принят как подходящий

После попытки исправить ту же проблему примерно через полчаса на laravel 5.8 с php v7.2 я заметил, что мой файл php начинается с разделителя вывода <?. Замена <? на <?php устранила мою проблему.

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

composer dump-autoload

Я надеюсь, что это сработает и для тебя

С уважением

Screenshot

Используйте этот путь.

>>> App\Models\Post

работал у меня ты

Moeez 07.03.2021 19:50

Используйте этот путь, надеюсь, вы получили свой ответ

App\Models\Post

Добро пожаловать в Stack Overflow. @MoviesLiker уже отправил этот ответ пару месяцев назад, и с правильным форматированием. Обязательно прочтите существующие ответы, прежде чем добавлять новые. После того, как вы это сделаете, вы все еще можете дать новый ответ, если у вас есть что-то новое, чтобы добавить в беседу. В противном случае, в будущем, когда вы заработаете больше репутации, вы сможете проголосовать за существующие ответы, чтобы убедиться, что они верны.

Jeremy Caney 23.11.2020 00:23

Не используйте этот путь

App\Post

Используйте этот путь

App\Models\Post

Похоже, что в ответе отсутствует дополнительная информация; что вы имеете в виду, говоря «Используйте этот путь»?

Jos Faber 14.05.2021 08:40

У меня была аналогичная проблема с App\Post::count(), но она работает, когда я добавляю модели перед публикацией. Вы тоже можете попробовать это.

App\Models\Post::count()

Итак, в вашем случае:

App\Models\Dog

Другие вопросы по теме