我对映射oneToMany的学说模型有疑问。我有两个模型,如日历和日。日历参考日历。如果我尝试从日历中获取相关的日期,我将始终获得所有数据库表条目。
日历类
/**
* @Entity
* @Table(name="calendar")
*/
class Calendar {
/**
* @Id
* @Column(type="integer", name="id")
* @GeneratedValue
*/
private $id;
/** @Column(length=255) */
private $title;
/**
* @OneToMany(targetEntity="Day", mappedBy="calendar", fetch="EAGER")
*/
private $days;
...
日间课程
/**
* @Entity
* @Table(name="day")
*/
class Day {
/**
* @Id
* @Column(type="integer", name="id")
* @GeneratedValue
*/
private $id;
/** @Column(length=255) */
private $title;
/**
* @Column(type="integer", name="calendar")
* @ManyToOne(targetEntity="Calendar", inversedBy="days")
* @JoinColumn(name="calendar_id", referencedColumnName="id")
*/
private $calendar;
...
表
CREATE TABLE `calendar` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11;
CREATE TABLE `day` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`calendar` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=50 ;
ALTER TABLE `day`
ADD CONSTRAINT `day_ibfk_1` FOREIGN KEY (`calendar`) REFERENCES `calendar` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
我控制器中的电话
$query = $this->entityManager->createQuery("SELECT u FROM \Gallery\Model\Calendar u WHERE u.shareHash='" . $shareHash . "'");
$calendar = $query->getOneOrNullResult();
$days = $calendar->getDays();
我得到了正确的日历,但是如果我给getDays打电话,我会从数据库中获取全天的条目,而不仅仅是正确的条目。
希望有人可以帮助我。