Отличный внешний ключ и ManyToOne в Учении - PullRequest
0 голосов
/ 09 июля 2011

Я только начинающий использовать учение.

У меня есть 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;

Я не уверен, что это правильно, но когда я пытаюсь запросить главы, чтобы получить идентификатор главы 1. Это ошибка:

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

Но если япопробуйте вызвать "$ book-> getChapters () -> first () -> getChapName ()".Я получаю фф.ошибка:

A PHP Error was encountered

Severity: Notice

Message: Undefined index: id

Filename: Persisters/BasicEntityPersister.php

Line Number: 1193

В чем может быть проблема, потому что я очень запутался.

Спасибо

1 Ответ

2 голосов
/ 09 июля 2011

Вы должны использовать @JoinColumn в $ Book. Это необходимо, потому что вы не используете имена столбцов по умолчанию.

Код:

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

Вот вся документация по сопоставлениям с доктриной: http://www.doctrine -project.org / документы / ОРМ / 2.0 / ы / ссылка / ассоциация-mapping.html

...