У меня есть список элементов для отображения на странице с формой поиска над ним для фильтрации этих элементов, как и в любом обычном бэкэнде. Проблема в том, что я не знаю, как добавить критерии поиска в существующий запрос с соединениями... Вот что у меня есть:
Я использую специальный метод в репозитории, связанном с сущностью, чтобы добавить соединения к запросу (, чтобы избежать множества запросов ). Контроллер выглядит так:
class ModelController extends Controller
{
public function indexAction(Request $request)
{
//...
$em = $this->getDoctrine()->getManager();
$query = $em->getRepository('AcmeDemoBundle:Item')->getList();
}
}
Метод getList
в репозитории выглядит так:
use Doctrine\ORM\EntityRepository;
//...
class ItemRepository extends EntityRepository
{
public function getList()
{
$queryBuilder = $this
->createQueryBuilder('i')
->innerJoin('i.brand', 'b');
return $queryBuilder->getQuery();
}
}
Я создал объект формы ItemSearchType
с несколькими полями для поиска элементов.
Как я могу легко добавить критерии поиска из данных, представленных в форме поиска, для отображения отфильтрованных элементов?
Вот что в моем контроллере относительно формы поиска:
class ModelController extends Controller
{
public function indexAction(Request $request)
{
//...
if ($request->getMethod() === 'POST') {
$searchForm->bindRequest($request);
if ($searchForm->isValid()) {
$searchCriteria = $searchForm->getData();
// Do something with this data!...but I don't know how
}
}
}
Спасибо!