Неустранимая ошибка: класс AppBundle \ Entity \ Job не найден Symfony 3.4

Надеюсь, ты сможешь мне помочь. Я работаю с Symfony 3.4 на Linux. Когда я запускаю свое приложение, у меня появляется следующая ошибка:

Fatal error: Uncaught Doctrine\Common\Persistence\Mapping\MappingException: The class 'AppBundle\Entity\Job' was not found in the chain configured namespaces in /var/www/html/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php:37 Stack trace: #0 /var/www/html/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php(112): Doctrine\Common\Persistence\Mapping\MappingException::classNotFoundInNamespaces('AppBundle\Entit...', Array) #1 /var/www/html/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(151): Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain->loadMetadataForClass('AppBundle\Entit...', Object(Doctrine\ORM\Mapping\ClassMetadata)) #2 /var/www/html/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(332): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array) #3 /var/www/html/vendor/doctrine/orm/lib/Doctrine/ in /var/www/html/vendor/twig/twig/lib/Twig/Cache/Filesystem.php on line 57

Я создал объект с именем Job с помощью команды

php bin/console doctrine:generate:entity

Он без проблем создал объект и репозиторий. После этого я обновил базу данных

php bin/console doctrine:schema:update --force

Все идет нормально. Теперь приступаю к работе с контроллером:

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Entity\Job;
use AppBundle\Entity\User;

use Symfony\Component\HttpFoundation\Response;
use Doctrine\ORM\EntityManagerInterface;

class DefaultController extends Controller
{
    /**
     * @Route("/", name = "homepage")
     */
    public function indexAction(Request $request)
    {

        $em = $this->getDoctrine()->getManager();

        $job = new Job();

        $job->setName('PHP');
        $job->setDescription('Description');
        $job->setCategory('IT');
        $job->setLocation('London');



        $em->persist($job);
        $em->flush();

        // replace this example code with whatever you need
        return $this->render('default/index.html.twig', [
            'base_dir' => realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
        ]);
    }
}

Если я попытаюсь сбросить $ job до того, как продолжу то же самое, я получу результат как

object(AppBundle\Entity\Job)#242 (5) {
["id":"AppBundle\Entity\Job":private]=> NULL
["name":"AppBundle\Entity\Job":private]=> string(3) "PHP"
["description":"AppBundle\Entity\Job":private]=> string(11) "Description" ["category":"AppBundle\Entity\Job":private]=>
string(2) "IT" ["location":"AppBundle\Entity\Job":private]=>
string(6) "London" } job

С одной стороны, он говорит, что не может найти класс Job. С другой стороны, он хорошо создает объект.

Кто-нибудь знает, что происходит?

Пытался

php bin/console cache:clear php bin/console cache:warmup

Добавление класса вакансии

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Job
 *
 * @ORM\Table(name = "job")
 * @ORM\Entity(repositoryClass = "AppBundle\Repository\JobRepository")
 */
class Job
{
    /**
     * @var int
     *
     * @ORM\Column(name = "id", type = "integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy = "AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name = "name", type = "string", length=255)
     */
    private $name;

    /**
     * @var string
     *
     * @ORM\Column(name = "description", type = "string", length=255)
     */
    private $description;

    /**
     * @var string
     *
     * @ORM\Column(name = "category", type = "string", length=255)
     */
    private $category;

    /**
     * @var string
     *
     * @ORM\Column(name = "location", type = "string", length=255)
     */
    private $location;


    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     *
     * @return Job
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set description
     *
     * @param string $description
     *
     * @return Job
     */
    public function setDescription($description)
    {
        $this->description = $description;

        return $this;
    }

    /**
     * Get description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Set category
     *
     * @param string $category
     *
     * @return Job
     */
    public function setCategory($category)
    {
        $this->category = $category;

        return $this;
    }

    /**
     * Get category
     *
     * @return string
     */
    public function getCategory()
    {
        return $this->category;
    }

    /**
     * Set location
     *
     * @param string $location
     *
     * @return Job
     */
    public function setLocation($location)
    {
        $this->location = $location;

        return $this;
    }

    /**
     * Get location
     *
     * @return string
     */
    public function getLocation()
    {
        return $this->location;
    }
}

покажите свой класс AppBundle \ Entity \ Job, пожалуйста

Sergei Kutanov 30.03.2018 01:22

Попробуйте очистить кеш.

Jannes Botis 30.03.2018 09:21

Почему вы использовали base_dir в рендере?

Weenesta - Mathieu Dormeval 30.03.2018 13:32

Просто дикая догадка, но я предполагаю, что вы пытаетесь использовать аннотации в некоторых из своих классов, но вы все еще сгенерировали файл сопоставления в разделе Resources / config / doctrine.

Cerad 30.03.2018 15:21

@SergeiKutanov Класс вакансии добавлен в основной пост. спасибо за помощь

Zenit 02.04.2018 13:03

Привет @Cerad. Что ты конкретно имеешь ввиду?. Я использую аннотации в своем классе (см. Основной пост). У меня нет AppBundle / Resources / config / doctrine. У меня есть AppBundle / Resources / doctrine / metadata / orm / Jobs.orm.xml Как я могу это исправить?

Zenit 02.04.2018 13:19

В Doctrine вы можете одновременно использовать только один тип сопоставления (yaml, xml или аннотацию). Полностью удалите каталог Resources / doctrine, очистите кеш и посмотрите, что произойдет. Или удалите аннотации из ваших объектов.

Cerad 02.04.2018 14:22
Стоит ли изучать 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 и хотите разрабатывать...
2
7
598
0

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