不同的外键和DocTine中的ManyToOne

时间:2011-07-09 08:10:24

标签: php codeigniter doctrine

我只是使用教义的初学者。

我有2个表,书和章

BOOK[ BID, NAME ]
CHAPTER[ CID, BID, ChapName ]

章课:

/**
 * @Id
 * @Column(type="bigint", nullable=false)
 * @GeneratedValue(strategy="AUTO")
 */
private $cid;
/**
 * @ManyToOne(targetEntity="Book", inversedBy="Chapters")
 * @var Book
 */
private $Book;

书籍课程:

/**
 * @Id
 * @Column(type="bigint", nullable=false)
 * @GeneratedValue(strategy="AUTO")
 */
private $bid;
/**
 * @OneToMany(targetEntity="Chapter", mappedBy="Book", cascade={"persist", "remove", "merge"}, orphanRemoval=true))
 * @var Chapter[]
 */
private $Chapters;

我不确定它是否正确,但是当我尝试查询章节以获取章节ID时1.这是错误:

Unknown column 't0.Book_id' in 'field list'' 

但如果我尝试调用“$ book-> getChapters() - > first() - > getChapName()”。我得到了ff。错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined index: id

Filename: Persisters/BasicEntityPersister.php

Line Number: 1193

可能是什么问题,因为我很困惑。

谢谢

1 个答案:

答案 0 :(得分:2)

你必须在$ Book上使用@JoinColumn。 这是必需的,因为您不使用默认列名。

代码:

/**
 * @ManyToOne(targetEntity="Book", inversedBy="Chapters")
 * @JoinColumn(name="BID", referencedColumnName="cid")
 * @var Book
 */
private $Book;

以下是关于与学说的映射的整个文档: http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html