Пример #1
0
 /**
  * Translates a query an manipulates given query object
  *
  * @param Tx_PtExtlist_Domain_QueryObject_Criteria $criteria Criteria to be translated
  * @param \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery Query to add criteria to
  * @param \TYPO3\CMS\Extbase\Persistence\Repository $extbaseRepository Associated repository
  * @return \TYPO3\CMS\Extbase\Persistence\Generic\Query
  */
 public static function translateCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria $criteria, \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery, \TYPO3\CMS\Extbase\Persistence\Repository $extbaseRepository)
 {
     // translate NOT criteria by creating a new extbase query
     $tmpQuery = Tx_PtExtlist_Domain_DataBackend_ExtBaseDataBackend_ExtBaseInterpreter_ExtBaseInterpreter::setCriteriaOnExtBaseQueryByCriteria($criteria->getCriteria(), $extbaseRepository->createQuery(), $extbaseRepository);
     // put translated criteria together again in a single extbase query
     if ($extbaseQuery->getConstraint()) {
         $extbaseQuery->matching($extbaseQuery->logicalAnd($extbaseQuery->getConstraint(), $extbaseQuery->logicalNot($tmpQuery->getConstraint())));
     } else {
         $extbaseQuery->matching($extbaseQuery->logicalNot($tmpQuery->getConstraint()));
     }
     return $extbaseQuery;
 }
 /**
  * translate NOT criteria to string
  *
  * @param Tx_PtExtlist_Domain_QueryObject_Criteria $criteria Tx_PtExtlist_Domain_QueryObject_NotCriteria
  * @return string
  */
 public static function translateCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria $criteria)
 {
     return 'NOT (' . Tx_PtExtlist_Domain_DataBackend_MySqlDataBackend_MySqlInterpreter_MySqlInterpreter::translateCriteria($criteria->getCriteria()) . ')';
 }