2011-08-01 2 views
0

Doctrine 2.1 초보자로서 나는 Doctrine 2를 사용하기 시작하려하지만 기본적인 것으로 보이는 것에서 붙들려하고 있습니다. 하지만 여전히 나는 주위에 내 머리를 정리 할 수 ​​없습니다Doctrine 2 구성 문제입니다. 엔티티를 찾을 수 없습니다.

$ doctrine orm:generate-entities Entities 

Processing entity "MyUser" 

Entity classes generated to "/home/lucvh/NetBeansProjects/doctrinetest/Entities" 

가 MyUser.php 파일 내가

내가 다음 스키마를 생성하는 진행 (아래 참조) 무엇을 기대 생성 실행하는 Entities dir 아래에있는 MyUser 클래스를 찾지 못했기 때문에 클래스 로더가 작동하지 않으므로 분명히 실패합니다. CLI의 설정의

<?php 



use Doctrine\ORM\Mapping as ORM; 

/** 
* MyUser 
*/ 
class MyUser 
{ 
    /** 
    * @var string $Firstname 
    */ 
    private $Firstname; 

    /** 
    * @var string $Lastname 
    */ 
    private $Lastname; 

    /** 
    * @var string $Email 
    */ 
    private $Email; 

    /** 
    * @var boolean $Enabled 
    */ 
    private $Enabled; 

    /** 
    * @var integer $Id 
    */ 
    private $Id; 


    /** 
    * Set Firstname 
    * 
    * @param string $firstname 
    */ 
    public function setFirstname($firstname) 
    { 
     $this->Firstname = $firstname; 
    } 

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

    /** 
    * Set Lastname 
    * 
    * @param string $lastname 
    */ 
    public function setLastname($lastname) 
    { 
     $this->Lastname = $lastname; 
    } 

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

    /** 
    * Set Email 
    * 
    * @param string $email 
    */ 
    public function setEmail($email) 
    { 
     $this->Email = $email; 
    } 

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

    /** 
    * Set Enabled 
    * 
    * @param boolean $enabled 
    */ 
    public function setEnabled($enabled) 
    { 
     $this->Enabled = $enabled; 
    } 

    /** 
    * Get Enabled 
    * 
    * @return boolean 
    */ 
    public function getEnabled() 
    { 
     return $this->Enabled; 
    } 

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

내용/매핑/XML/MyUser.dcm.xml

<?xml version="1.0"?> 
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> 
    <entity name="MyUser"> 
    <id name="Id" type="integer"> 
     <generator strategy="AUTO"/> 
    </id> 
    <field name="Firstname" type="string" nullable="true"/> 
    <field name="Lastname" type="string" nullable="true"/> 
    <field name="Email" type="string" nullable="true"/> 
    <field name="Enabled" type="boolean" nullable="true"/> 
    </entity> 
</doctrine-mapping> 

내용 : 내가 뭘 .....

$ doctrine orm:schema-tool:create 
PHP Warning: class_parents(): Class MyUser does not exist and could not be loaded in /usr/share/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 223 
PHP Warning: array_reverse() expects parameter 1 to be array, boolean given in /usr/share/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 223 
PHP Warning: Invalid argument supplied for foreach() in /usr/share/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 223 



    [ReflectionException]   
    Class MyUser does not exist 



orm:schema-tool:create [--dump-sql] 

MyUser.php를 놓친 거지 -config.php

<?php 
require_once '/usr/share/php/Doctrine/Common/ClassLoader.php'; 


$classLoader = new \Doctrine\Common\ClassLoader('Entities', __DIR__); 
$classLoader->register(); 

$classLoader = new \Doctrine\Common\ClassLoader('Proxies', __DIR__); 
$classLoader->register(); 

$config = new \Doctrine\ORM\Configuration(); 
$config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache); 
$config->setProxyDir(__DIR__ . '/Proxies'); 
$config->setProxyNamespace('Proxies'); 


$driverImpl = new Doctrine\ORM\Mapping\Driver\XmlDriver(__DIR__."/config/mappings/xml"); 
$config->setMetadataDriverImpl($driverImpl); 


$connectionOptions = array(
    'driver' => 'pdo_pgsql', 
    'host' => 'localhost', 
    'user' => 'xxx', 
    'password' => 'xxx', 
    'dbname' => 'xx' 
); 

$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config); 

$helperSet = new \Symfony\Component\Console\Helper\HelperSet(array(
    'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()), 
    'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em) 
)); 

?> 

답변

0

다른 사람이 가지고 있다면 전자 같은 문제, 링크 된 스레드에서 다음 게시물이 도움이 될 수 있습니다 :

Doctrine 2.0 ReflectionException when I try to do YAML Mapping

나는 같은 문제에 직면했다.

$ 교리의 ORM : 생성-기관 --generate - 주석 비결은 옵션을 1로 설정 --generate - 주석 내가 내가 아래에 사용되는 명령을 복사 한으로 YAML 파일에서 엔티티를 생성하는 것입니다 = 1 엔티티/

이것은 매핑 정보가 모두 인 엔티티를 생성한다는 것입니다. 이제 의 메타 데이터 드라이버 구성을 yaml 파일 대신 엔티티를 사용하도록 부트 스트랩을 변경하면 스키마 생성이 작동합니다.

0

아마 같은 문제가있을 때 그 이유는 네임 스페이스가 없다는 것입니다. 생성 된 엔티티에서 볼 수 있듯이 네임 스페이스가 없으므로 Doctrine은 찾을 수 없습니다.

+0

이 네임 스페이스는 추가되어야하는 위치/누락 된 네임 스페이스는 무엇입니까? – Shawn

1

이 문제는 모듈을로드하지 않아 발생할 수 있습니다.

ZF2를 사용하는 경우 application.config.php에 모듈을 추가해야합니다. ZF3을 사용하는 경우 modules.config.php에 포함시켜야합니다.

이 정보가 도움이되기를 바랍니다.

관련 문제