2017-07-09 11 views
1

私はリストメソッドを行うためにDoctrineで最初のDAOを実行しようとしています。私のエンティティクラスこのクラスは、これらの行を使用して生成されたDoctrine。クラスXXXが有効なエンティティまたはマップされたスーパークラスではありません

ベンダー/ binに/ドクトリンのORM 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; 
    } 
} 

// srcに/モデルにCanales.phpです:変換マッピング--from-データベースのXML設定/ XML/

ベンダー/ binに/ドクトリンのORM:生成-エンティティ--generate - 注釈=真--regenerate-実体=真のsrc/

(/ SRC /モデル/ 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'というメッセージが 'Class'というモデルでキャッチされない例外\ dto \ Canales "が有効なエンティティまたはマップされたスーパークラスではありません。 in /Applications/MAMP/htdocs/yoga/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:336

私は結果が私のためにstackoverflowでいくつかの同様の質問を試みました。任意のアイデアやアドバイス?

+0

私はそれを使用していないため、いくつかの回答を読んだので、私はeAccleratorに問題があると判明しました。何かアドバイスをいただければ幸いです。 – barthuin

+0

私は私の問題を解決しました。私はbootstrap.phpを変更しなければなりませんでした。$ config = Setup :: createAnnotationMetadataConfiguration(array(__ DIR __。 "/ src/model/dto")、$ isDevMode、null、null、false); – barthuin

答えて

0

私は私の問題を解決しました。 bootstrap.phpをこの行に変更する必要がありました。

$config = Setup::createAnnotationMetadataConfiguration(array(DIR."/src‌​/model/dto"), $isDevMode, null, null, false); 
関連する問題