Doctrine OneToMany获取所有数据库条目

时间:2014-02-01 19:36:15

标签: doctrine one-to-many

我对映射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打电话,我会从数据库中获取全天的条目,而不仅仅是正确的条目。

希望有人可以帮助我。

0 个答案:

没有答案