Доктрина. Класс XXX не является допустимым объектом или отображенным суперклассом

Я пытаюсь сделать свой первый DAO с Doctrine для выполнения метода списка. Мой класс сущности - Canales.php в папке / src / model / dto

namespace model\dto;

use Doctrine\ORM\Mapping as ORM;

/**
 * Canales
 *
 * @ORM\Table(name="Canales")
 * @ORM\Entity
 */
class Canales
{
    /**
     * @var string
     *
     * @ORM\Column(name="Nombre", type="string", length=255, nullable=false)
     */
    private $nombre;

    /**
     * @var integer
     *
     * @ORM\Column(name="Id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * Class Constructor
     * @param    $nombre   
     * @param    $id   
     */
    public function __construct($nombre, $id)
    {
        $this->nombre = $nombre;
        $this->url = $url;
        $this->imagen = $imagen;
        $this->ingles = $ingles;
        $this->id = $id;
    }



    /**
     * Set nombre
     *
     * @param string $nombre
     * @return Canales
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;

        return $this;
    }

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

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

Этот класс был сгенерирован с использованием этих строк

поставщик / bin / doctrine orm: convert-mapping --from-database xml config / xml /

vendor / bin / doctrine orm: generate-entity --generate-annotations = true --regenerate-entity = true src /

мой класс Dao (в папке / src / model / dao)

class daoGenerico{
private $entityManager;

/**
 * Class Constructor
 * @param    $entityManager   
 */
public function __construct()
{
    require_once("bootstrap.php");
    $this->entityManager = $entityManager;
}


/**
 * @return mixed
 */
public function getEntityManager()
{
    return $this->entityManager;
}

function showAction(){
    $repository = $this->getEntityManager()->getRepository('model\dto\Canales');
        //->find($id);
    echo "..";
    $productos = $repository->findAll();
    echo "OK";
    if (!$productos) {
        throw $this->createNotFoundException(
            'No product found'
        );
    }
    else{
        var_dump($productos);
    }
}   

}

Мой bootstrap.php

// bootstrap.php

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

require_once "vendor/autoload.php";

// Create a simple "default" Doctrine ORM configuration for Annotations
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src/model/dto"), $isDevMode);

// database configuration parameters
$conn = array(
    'driver'   => 'pdo_mysql',
    'host'     => 'localhost',
    'user'     => 'root',
    'password' => 'root',
    'dbname'   => 'yoga',
    'charset'  => 'UTF8',
);

// obtaining the entity manager
$entityManager = EntityManager::create($conn, $config);

и мой файл test.php

include_once('./src/model/dao/daoGenerico.php');

$daoGenerico = new daoGenerico();
$daoGenerico->showAction();

Composer.json - это

{
   "require": {
        "doctrine/orm": "2.4.*"
    },
    "autoload": {
        "psr-0": {"": "src/"}
    }
}

Когда я его выполнил, у меня есть эта ошибка

Неустранимая ошибка: неперехваченное исключение «Doctrine \ ORM \ Mapping \ MappingException» с сообщением «Класс« модель \ dto \ Canales »не является допустимым объектом или сопоставленным суперклассом». в /Applications/MAMP/htdocs/yoga/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:336

Я пробовал несколько похожих вопросов в stackoverflow, но безрезультатно. Есть идея или совет?


person barthuin    schedule 09.07.2017    source источник
comment
Я отказался от проблемы с eAcclerator, поскольку прочитал некоторые ответы, потому что я его не использую. Любой совет будет принят во внимание   -  person barthuin    schedule 09.07.2017
comment
Я решил свою проблему. Мне пришлось изменить свой bootstrap.php, эту строку $ config = Setup :: createAnnotationMetadataConfiguration (array (DIR ./src/model/dto), $ isDevMode, null, null, false);   -  person barthuin    schedule 10.07.2017


Ответы (1)


Я решил свою проблему. Мне пришлось изменить свой bootstrap.php, эту строку

$config = Setup::createAnnotationMetadataConfiguration(array(DIR."/src‌​/model/dto"), $isDevMode, null, null, false); 
person barthuin    schedule 20.07.2017