2017-09-05 19 views
1

나는 새로교리는 클래스 MappingException를로드하지 않습니다

나는 제품 클래스의 모든 시간을 MappingException를 얻을 도와주세요 단지 교리 ORM의 설치가

<?php 

namespace src; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="product") 
*/ 
class Product{ 

    /** 
    * @ORM\Column(type="integer", length = 5) 
    * @ORM\Id 
    * @ORM\GenerateValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=2, name="product_code") 
    */ 
    protected $code; 

    /** 
    * @ORM\Column(type="string", length=10, name="product_name") 
    */ 
    protected $name; 

} 

나는 일반 부트 스트랩 파일이

<?php 
// bootstrap.php 
require_once "vendor/autoload.php"; 
require_once "src/Product.php"; 

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

$paths = array(__DIR__."/src"); 
$isDevMode = true; 

$dbParams = array(
    'driver' => 'pdo_mysql', 
    'user'  => 'root', 
    'password' => '', 
    'dbname' => 'myDbName', 
); 

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 
$entityManager = EntityManager::create($dbParams, $config); 

$theProduct = $entityManager->find("Product", 500); 

그리고

{ 
    "require": { 
    "doctrine/orm": "v2.5.10" 
    }, 
    "autoload": { 
    "psr-4": { 
     "src\\": "src/" 
    } 
    } 
} 
와 작곡가가

폴더 구조는 내가 bootstrap.php을 실행하고 enter image description here

입니다

내가 항상 치명적인 오류가 무엇 이건

: catch되지 않은 교리 \ 공통 \ 지속성 \ 매핑 \ MappingException가 : 클래스 '제품'에 존재하지 않는 D : \ 프로젝트 \ 쪽의 \ 업체 \ 교리 \ 공통 \ lib 디렉토리 \ 96

+0

엔티티가 실제로'__DIR __. "/ src"에 있습니까? 그 경로를 인쇄하고 모든 것이 정확한지 확인 했습니까? 오토로더가 올바르게 구성 되었습니까? – ccKep

+0

네, 문제는 경로가 정확하다는 것입니다. 몇 가지 방법으로 점검했습니다. 나는 그 밖의 무엇을 확인할 지 모른다. – user3410843

+0

''autoload ': { "psr-4": { "src \\": "src /"}}'를 composer.json에 추가하십시오 (네임 스페이스로'src'를 사용하는 것은 아주 드뭅니다). – ccKep

답변

0

이 두 가지 문제는 여기

1)

,536 있습니다 줄에 교리 \ 공통 \ 지속성 \ 매핑 \ MappingException.php

createAnnotationMetadataConfiguration에는 boolean $ useSimpleAnnotationReader 인 다섯 번째 매개 변수가 있습니다. 당신이 앞에 매핑 및 @ORM을 포함하지 않는 경우

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false); 

그렇지 않으면 설정시 허위 5 매개 변수 지난이

use Doctrine\ORM\Mapping as ORM 
/** 
* @ORM\Entity 
*/ 

같은 것을 쓰고 싶은 경우에 따라서는

와 잘 작동합니다
/** 
* @Entity 
*/ 

2)

당신은 당신이 가지고 당신의 엔티티 네임 스페이스하려면

$config->addEntityNamespace('', 'src\entity'); 

첫 번째 매개 변수의 별칭입니다 귀하의 설정에 엔티티 네임 스페이스를 추가 (당신이 빈을 남길 수 있습니다 또는 당신이 앞에 추가해야 넣어 무엇 [:] 다음 문장에서) 지금 당신은

를 호출 할 수 있습니다
$theProduct = $entityManager->find(":Product", 500);