Код: Выделить всё
SELECT *, (sector1 IN (...)) AS s1, (sector2 IN (...)) AS s2, (sector3 IN (...)) AS s3
FROM jobs
WHERE (sector1 IN (1, 2) OR sector3 IN (1, 2) OR sector3 IN (1, 2))
ORDER BY (s1 AND s2 AND s3) DESC, (s1 AND s2) DESC, (s1 AND s3) DESC, etc...
Результаты S1 , s2 и s3 теперь могут Будьте использованы для сортировки: сначала, если все 3 Секторы совпадают, чем если бы секторы 1 и 2 совпадают, чем если, если секторы 1 и 3 совпадают и т. Д. < /p>
(...) < /code> - 1 или больше секторы от пользовательского ввода. Их нужно избежать и вставлено и т. Д., Таким образом, где сектор 1 в (...) < /code>. < /P>
Но как? < /P>
Код: Выделить всё
selectRawКод: Выделить всё
$query->selectRaw("sector1 IN (" . implode(',', array_fill(0, count($filters['sectors']), '?')) . ") AS s1", $filters['sectors']);
< /code>
Я должен сам расширить заполнители? Должен быть способ позволить застройщику запроса сделать это. Может быть, условия экспрессии Код: Выделить всё
whereNotInПодробнее здесь: https://stackoverflow.com/questions/507 ... -x-in-as-y
Мобильная версия