В настоящее время я переношу большой проект в рамки Laravel http://hobbyathletes.com/events/south-america/all-event-types/all/ . Мне нужно перенести мою внутреннюю поисковую систему, которая использует следующий запрос (если искать одно слово, здесь дополнительный предварительно выбранный вариант Южная Америка):
SELECT *, ( (CASE WHEN name LIKE '%searchthis%' THEN 1000 ELSE 0 END) + (CASE WHEN name LIKE 'searchthis %' THEN 10 ELSE 0 END) + (CASE WHEN name LIKE 'searchthis%' THEN 1 ELSE 0 END) + (CASE WHEN name LIKE '% searchthis %' THEN 5 ELSE 0 END) + (CASE WHEN city LIKE '%searchthis%' THEN 500 ELSE 0 END) + (CASE WHEN city LIKE 'searchthis%' THEN 10 ELSE 0 END) + (CASE WHEN city LIKE 'searchthis %' THEN 1 ELSE 0 END) + (CASE WHEN city LIKE '% searchthis %' THEN 5 ELSE 0 END) + (CASE WHEN country LIKE '%searchthis%' THEN 500 ELSE 0 END) + (CASE WHEN country LIKE 'searchthis%' THEN 10 ELSE 0 END) + (CASE WHEN country LIKE 'searchthis %' THEN 1 ELSE 0 END) + (CASE WHEN country LIKE '% searchthis %' THEN 5 ELSE 0 END) + (CASE WHEN homepage LIKE '%searchthis%' THEN 600 ELSE 0 END) + (CASE WHEN headline LIKE '%searchthis%' THEN 100 ELSE 0 END) + (CASE WHEN headline LIKE 'searchthis%' THEN 10 ELSE 0 END) + (CASE WHEN headline LIKE 'searchthis %' THEN 1 ELSE 0 END) + (CASE WHEN headline LIKE '% searchthis %' THEN 5 ELSE 0 END) + (CASE WHEN description LIKE '%searchthis%' THEN 100 ELSE 0 END) + (CASE WHEN description LIKE 'searchthis%' THEN 10 ELSE 0 END) + (CASE WHEN description LIKE 'searchthis %' THEN 1 ELSE 0 END) + (CASE WHEN description LIKE '% searchthis %' THEN 5 ELSE 0 END) + (CASE WHEN distances LIKE '%searchthis%' THEN 100 ELSE 0 END) + (CASE WHEN distances LIKE 'searchthis%' THEN 10 ELSE 0 END) + (CASE WHEN distances LIKE 'searchthis %' THEN 1 ELSE 0 END) + (CASE WHEN distances LIKE '% searchthis %' THEN 5 ELSE 0 END) + (CASE WHEN date LIKE '%2014%' THEN 300 ELSE 0 END) + (CASE WHEN name LIKE '%2014%' THEN 200 ELSE 0 END) + (CASE WHEN date LIKE '%2013%' THEN 200 ELSE 0 END) + (CASE WHEN name LIKE '%2013%' THEN 100 ELSE 0 END) ) AS relevance FROM events WHERE ( country = 'Argentina' or country = 'Bolivia' or country = 'Brazil' or country = 'Chile' or country = 'Colombia' or country = 'Ecuador' or country = 'Guyana' or country = 'Paraguay' or country = 'Peru' or country = 'Suriname' or country = 'Uganda' or country = 'Uruguay' or country = 'Venezuela' ) AND ( name LIKE '%searchthis%' OR country LIKE '%searchthis%' OR city LIKE '%searchthis%' OR homepage LIKE '%searchthis%' OR headline LIKE '%searchthis%' OR description LIKE '%searchthis%' OR distances LIKE '%searchthis%' ) ORDER BY relevance DESC
Как передать этот запрос в конструктор запросов Eloquent Query? Я уже пробовал DB:raw($query)
который, похоже, не работает … Пробовал с нужной ->paginate(25)
и с ->get()
, все не работают. Кто-нибудь здесь может поставить меня в правильном направлении?
Попробуйте с DB :: select ()
DB::select(DB::raw(" SELECT * FROM bla bla bla "));