сортировка строк, относящихся к ключевому слову в определенных столбцах доктрины - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть запрос, который ищет ключевое слово из разных столбцов

$queryBuilder                    =  $this->entityManager->getRepository(Contact::class)->createQueryBuilder("o");
    $queryBuilder->where($queryBuilder->expr()->orX(
        $queryBuilder->expr()->like("o.FirstName", ":name"),
        $queryBuilder->expr()->like("o.Surname", ":name"),
        $queryBuilder->expr()->like("o.Email", ":name"),
        $queryBuilder->expr()->like("o.Biography", ":name"),
        $queryBuilder->expr()->like("o.Department", ":name"),
        $queryBuilder->expr()->like("p.Name", ":name"),
        $queryBuilder->expr()->like("pc.Name", ":name"),
        $queryBuilder->expr()->like("CONCAT(o.FirstName, ' ', o.Surname)", ":name")
    ))
    ->leftJoin(ContactPublication::class, "c", "WITH", "o.ID = c.Contact_ID")
    ->leftJoin(Publication::class, "p", "WITH", "p.ID = c.Publication_ID")
    ->leftJoin(Publication::class, "pc", "WITH", "pc.Contact_ID = o.ID")
    ->setParameter("name", "%" . $value . "%");

    $query                           =  $queryBuilder->getQuery();
    $contacts                        =  $query->getResult();

Единственная проблема заключается в том, что мне нужно привести строки, которые наиболее соответствуют, с двумя столбцами o.FirstName и o.Surname.

Например, если у меня есть ключевое слово abc, и это ключевое слово приносит мне три строки.

Первая строка имеет abc совпадение в ее o.Biography столбце

Втораястрока имеет abc совпадение в своем o.FirstName столбце

Третья строка имеет abc совпадение в своем o.Surname столбце

Я хочу получить данные, отсортированные как:

1-й ряд abc соответствует в столбце o.FirstName

2-й ряд abc соответствует в столбце o.Surname

3-й ряд abc соответствует в столбце o.Biography

Есть ли в доктрине фильтр, который это делает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...