Laravel raw relevance query. How to deal with this?

I am currently migrating a large project to the Laravel framework http://hobbyathletes.com/events/south-america/all-event-types/all/ . I need to migrate my internal search engine which uses the following query (if searching for a single word, here's an additional preselected option South America):

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

      

How do I pass this query to the Eloquent Query constructor? I already tried DB:raw($query)

, which doesn't seem to work ... Tried with very necessary ->paginate(25)

and with ->get()

, all don't work. Can anyone here put me in the right direction?

+3


source to share


1 answer


Try with DB :: select ()



DB::select(DB::raw("
    SELECT * FROM bla bla bla  
"));

      

+1


source







All Articles