实体集合的学说FETCH和CRITERIA,都不起作用

时间:2019-02-05 20:55:51

标签: doctrine criteria doctrine-collection

我有2个实体使我难以获取它们的集合并从另一个集合中获取正确的条件。

首先,ScheduleObject扩展了另一个

    /**
     * @ORM\Entity(repositoryClass="App\Repository\ListMarketRepository")
     */
    class MarketSchedule extends ListMarket implements ...
    { 

        /**
         * @ORM\OneToMany(targetEntity="App\Entity\Link\ScheduleLink", mappedBy="market")
         */
        private $scheduleLinks;
.....OTHER FIELDS

    }

AND



        /**
         * @ORM\Entity(repositoryClass="App\Repository\ScheduleLinkRepository")
         * @ORM\HasLifecycleCallbacks()
         */
        class ScheduleLink
        {
            use TimestampEntity;

            /**
             * @ORM\Id()
             * @ORM\GeneratedValue()
             * @ORM\Column(type="integer")
             * @Groups({"model", "event"})
             */
            private $id;

            /**
             * @ORM\ManyToOne(targetEntity="App\Entity\Market\MarketSchedule", inversedBy="scheduleLinks")
             * @ORM\JoinColumn(nullable=false, referencedColumnName="id", name="listMarketId")
             */
            private $market;


            /**
             * @ORM\Column(type="date", nullable=true)
             */
            private $staticDate;

            /**
             * @ORM\Column(type="smallint", nullable=true)
             */
            private $dayOfWeek;

             OTHER FIELDS....

        }

我已经做了很多尝试,并且没有使用 ScheduleLinkRepository 来获取关联中ScheduleLink的结果,但没有任何事情可以解决该仓库!

$markets = $em->findByList($market);
$schedules = new ArrayCollection($markets);

继续并扩展变量以提高可读性。一切正常,直到我尝试通过Criteria :: expr()对集合进行排序;

$criteria = Criteria::create()
            ->where(Criteria::expr()->isNull('staticDate'));
$new = $schedules->matching($criteria);

上面的表达式通常在大约所有查询的99%中都是正确的,尽管我还没有从 $ schedules $ new 变量中获得数组,但结果正确

我需要 1.使用关系而不是控制器中的存储库,并在Twig中获取集合时获取集合 2.(或更重要的是)获得在这种情况下可以工作的标准。我尚未在集合上使用条件,但它可以正常工作。它的确不是很有趣,在实践中似乎很简单,但是很失败。

0 个答案:

没有答案