我有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.(或更重要的是)获得在这种情况下可以工作的标准。我尚未在集合上使用条件,但它可以正常工作。它的确不是很有趣,在实践中似乎很简单,但是很失败。