我正在编写一个非常大的 extbase 扩展,并且必须处理一些复杂的过滤器功能。这将是纯 sql 中的一个衬里,但是,由于各种原因,我必须使用 Extbase ORM。
这是关于戏剧表演的。每一戏都有多重表演,戏是总根。
我必须在给定的时间范围内找到表演,这很容易。但是,该类别是父级(游戏)的子级。我没有在表演中保存该剧的参考,而是在剧中(那是因为必须将TCA配置为选择类型)。
我必须将结果转发到分页器小部件,这需要 QueryResultInterface 的实例。当我将戏剧用作聚合根并从那里提取表演时,它会返回 ObjectStorage 并破坏小部件。
如果父类别的孩子匹配或者我认为是正确的:没有合理的机会,是否有可能以某种方式限制输出?
public function findByTimeRangeInBeginTimeAndAttendCategoryAndStartOfBooking(Datetime $startRange, Datetime $endRange, $category = 'undefined') {
$query = $this->createQuery();
$constraints = array();
$constraints[] = $query->greaterThanOrEqual('timebegin', $startRange->getTimestamp());
$constraints[] = $query->lessThanOrEqual('timebegin', $endRange->getTimestamp());
if($category !== 'undefined') {
$constraints[] = $query->equals('play.category.name', $category);
}
$query->matching (
$query->logicalAnd($constraints)
);
$query->setOrderings (
Array('timebegin' => Tx_Extbase_Persistence_Query::ORDER_ASCENDING)
);
return $query->execute();
}