查询导致空结果的排序 - Extbase 6.2

时间:2016-10-16 10:10:42

标签: typo3 extbase typo3-6.2.x

我做了一个extbase扩展程序,想要列出我的第一个由startDate订购的约会,以及那些我希望按客户姓氏订购它们的约会。
在我的存储库中,我做了以下工作查询:

public function findAppointmentsForList($future) {
    $curtime = time();
    $query = $this->createQuery();
    $constraints = array();
    if ($future !== NULL) {
        $constraints[] = ($future) ?
                $query->greaterThanOrEqual('startDate', $curtime) :
                $query->lessThan('startDate', $curtime);
    }

    if ($constraints) {
        $query->matching($query->logicalAnd($constraints));
    } else {}

    $orderings = array(
        'startDate' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,
//            'customer.lastName' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
    );
    $query->setOrderings($orderings);
    return $query->execute();
}

它给我一些约会,所以我认为它正在工作 如果我取消注释行'customer.lastName...,则返回0约会 发生了什么事?这只是排序,它不可能使查询更小......
我甚至没有收到任何错误 - 例如我尝试使用无效的属性并且它给了我一个错误,所以属性名称也是正确的。
我调整了工作查询和那些客户对象中的姓氏。

这是我的预约模式条目:

/**
* customer
*
* @var \vendor\extension\Domain\Model\Customer
*/
protected $customer = NULL;

这是与之对应的TCA:

'customer' => array(
        'exclude' => 1,
        'label' => 'LLL:EXT:extension/Resources/Private/Language/locallang_db.xlf:tx_extension_domain_model_appointment.customer',
        'config' => array(
                'type' => 'select',
                'foreign_table' => 'fe_users',
                'minitems' => 0,
                'maxitems' => 1,
        ),
),
  编辑:它现在正在工作......但不幸的是我不知道为什么,在此期间改变了太多我认为与此无关。可能会对此产生影响的一件事:startDate属于Date类型,我注意到查询没有对其进行过滤,因此我将curtime更改为{{ 1}}它正确过滤。

1 个答案:

答案 0 :(得分:1)

当您在查询中使用相关模型作为匹配或orderBy的一部分时,将使用与相关表的连接来构建查询。这意味着,结果实际上更小,并且不包括没有客户的约会。

奇怪的是你在调试它时会看到姓氏,否则我会假设你在TCA中有一些配置错误。你能提供apointment表中的TCA代码吗?可能是它的模型吗?