두 엔터티 Item과 ItemPrice 사이의 관계를 지정하고 싶습니다. 항목은 가격을 가질 수 있지만 꼭 가질 필요는 없으므로 SQL에 왼쪽 결합과 같은 것이어야합니다. OneToOne 관계, nullable = true 인 JoinColumn을 사용하고 있습니다. EntityNotFoundException 예외입니다.Doctrine - OneToOne 관계 - EntityNotFoundException
class Item
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $item_id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* @ORM\Column(type="string")
*/
protected $image_file;
/**
* @ORM\OneToOne(targetEntity="ItemPrice")
* @ORM\JoinColumn(name="item_id", referencedColumnName="item_id", nullable=true)
*/
protected $price;
...
}
class ItemPrice
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
*/
protected $item_id;
/**
* @ORM\Column(type="integer")
*/
protected $gold;
/**
* @ORM\Column(type="integer")
*/
protected $silver;
/**
* @ORM\Column(type="integer")
*/
protected $bronze;
...
}
테이블 :
CREATE TABLE `item` (
`item_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
`image_file` varchar(100) DEFAULT NULL,
PRIMARY KEY (`item_id`),
UNIQUE KEY `uk_item_name` (`name`));
CREATE TABLE `item_price` (
`item_id` int(11) NOT NULL,
`gold` int(11) NOT NULL DEFAULT '0',
`silver` int(11) NOT NULL DEFAULT '0',
`bronze` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`item_id`));
내가 단방향 OneToOne라고 무슨 짓을했는지 생각 : 여기 내 코드는 http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-one-unidirectional 내 의견으로는 정확히 내가 필요된다.
네임 스페이스 정의를 제공 할 수 있습니까? – cptnk
내 대답으로 문제를 해결하는 데 성공 했습니까? – Wilt