2016-02-17 5 views
1

У меня есть расширение, в котором я хочу включить некоторые фильтры, я знаю, что я могу отфильтровать результаты, которые отображаются на моем listAction(), используя findBy.Extbase «findBy» с несколькими параметрами

Я проверил это, и она работала так:

$cars = $this->carRepository->findByCarid("1"); 
     $this->view->assign('cars', $cars); 

Моя проблема теперь мне нужно фильтровать результат с более чем одним параметром, что, если я хочу, чтобы добавить findByColor("blue") так что это дает мне все автомобили остроумие спрятал 1 и цвет синий? Какое решение extbase имеет для таких поисковых запросов? я не могу найти что-либо хорошее или понятно в документации.

+1

Посмотрите на [это] (https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.html) - книга немного устарела, но он все еще работает именно так. – Jost

ответ

3

Вы должны расширить свой репозиторий и скопировать эту функциональность самостоятельно. Extbase предлагает вам простой, но мощный API.

class whatEverYourRepositoryIsCalled extends \TYPO3\CMS\Extbase\Persistence\Repository { 
    public function findByFilter($carId, $color) { 
    // Create empty query = select * from table 
    $query = $this->createQuery(); 

    // Add query options 
    return $query->matching(
     // ALL conditions have to be met (AND) 
     $query->logicalAnd(
     // table column carId must be euqal to $carId 
     $query->equals('carId', $carId), 
     // table column color must be euqal to $color 
     $query->equals('color', $color) 
    ) 
    ); 
    } 
} 

Это довольно простой подход к вашей проблеме. В сценарии реального мира я, вероятно, использовал бы набор критериев фильтрации для фильтрации, например, array('carId' => 1, 'color' => 'blue'). Внутри findByFilter() эти значения будут извлечены и добавлены в запрос.

Ключом является создание желаемого запроса. Достаточно подробное объяснение того, как это сделать, можно найти по адресу http://blog.typoplanet.de/2010/01/27/the-repository-and-query-object-of-extbase/. К сожалению, это не совсем актуально, но часть о построении запросов остается в силе.

+0

спасибо, это действительно помогло мне. –

Смежные вопросы