2016-10-16 5 views
0

Я сделал расширение extbase и хочу перечислить свои назначения, заказанные сначала startDate, и для тех встреч, которые находятся в тот же день, я хочу заказать их по фамилии клиента.
В моем хранилище я сделал следующий рабочий запрос:Запрос с заказами, приводящий к пустым результатам - Extbase 6.2

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, 
     ), 
), 

EDIT: Это теперь работает ... но, к сожалению, я не знаю, почему, слишком сильно изменилось, и я думал, что не имеет к этому никакого отношения. Одна вещь, которая могла бы повлиять на это: startDate имеет тип Date, и я заметил, что запрос не отфильтровывал его правильно, поэтому после того, как я сменил curtime на new \DateTime('midnight'), он был правильно отфильтрован.

+0

И поле в вашей таблице 'Customer' является' last_name'? – lorenz

+0

Да, это из таблицы 'fe_users', потому что' Customer' расширяет его –

ответ

1

Когда вы используете связанные модели в запросе как часть соответствия или orderBy, тогда запрос будет строиться с присоединением к связанным таблицам. Это означает, что результат на самом деле меньше и не будет включать встречи без клиентов.

Странно то, что вы видите последние имена при его отладке, иначе я бы предположил, что у вас есть некоторые ошибки конфигурации в TCA. Можете ли вы предоставить код TCA из таблицы назначения и может быть его моделью?

+0

Я добавил некоторую информацию, но я сомневаюсь, что это может помочь ... Но я не знал об этих объединениях, это интересно - и объясняет, что, по-видимому, соединение не работает. –