2014-06-13 3 views
0

doctrine의 외래 키에 문제가 있습니다. "사용자"표와 "주문"표가 있습니다. 이제 orders-table의 userID에서 user-table의 id에 외래 키를 갖고 싶습니다. Doctrine 외래 키 작성

<?php 

namespace Application\TestBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Table(
* name="User", 
* options={"collate"="utf8_general_ci", 
* "charset"="utf8", 
* "engine"="InnoDB" 
* } 
*) 
* @ORM\Entity(repositoryClass="Application\TestBundle\Entity\UserRepository") 
*/ 
class User 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(
    * name="id", 
    * unique=true, 
    * type="integer", 
    * options={"unsigned"=true} 
    *) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    // ... 
} 

불행하게도 에는 외래 키가를 설정되지 않습니다 : 같은 사용자 단체가 보이는

<?php 

namespace Application\TestBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Table(
* name="Orders", 
* options={"collate"="utf8_general_ci", 
* "charset"="utf8", 
* "engine"="InnoDB" 
* } 
*) 
* @ORM\Entity(repositoryClass="Application\TestBundle\Entity\OrdersRepository") 
*/ 
class Orders 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(
    * name="id", 
    * unique=true, 
    * type="integer", 
    * options={"unsigned"=true} 
    *) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(
    * name="userID", 
    * type="integer", 
    * nullable=false, 
    * options={"unsigned"=true} 
    *) 
    * @ORM\OneToOne(targetEntity="User") 
    * @ORM\JoinColumn(name="userID", referencedColumnName="id") 
    */ 
    private $userID; 

    // ... 
} 

: 같은 주문 엔티티 보인다. 그것은 SQL 쿼리에 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

엔티티를 어떻게 유지합니까? 컨트롤러 액션에서 관련 * 부분을 붙여 넣을 수 있습니까? –

+0

내 업데이트 된 질문보기 – user3631654

답변

2

해결책은 간단합니다. 관계 또는 데이터 유형 (문자열, 객체, int) 일 수 있습니다. 그래서 내 예제에서는 관계가 필요하므로 @ORM\Column -annoation을 제거해야만했습니다.

0

이것은 대개 데이터베이스 테이블 엔진 유형이 MyISAM과 같은 외래 키를 지원하지 않는 경우에 발생합니다. 예를 들어 InnoDB로 엔진 유형을 변경 한 다음 실행 해보십시오.

console doctrine:schema:update 
+0

불행히도 그것은 이미 InnoDB입니다 – user3631654

+0

어떻게 될 수 있습니까? – user3631654