2017-01-25 3 views
0

Как я могу реализовать бесконечный свиток с пользовательскими запросами в Laravel? Что-то вроде:Как я могу реализовать бесконечный свиток с пользовательскими запросами в Laravel?

$query = Select * from table join table2 on condition where condition order by c1 ; 
$l = DB::select($query)->paginate(12); 

У меня есть 5 полого состояние, область, город, категория и price_range. Пользователь может выполнять поиск по любым полям с 1 по 5. Затем у меня есть некоторые другие параметры URL-адреса, чтобы позаботиться о сортировке.

Так что, если я использую пользовательские запросы, я могу конкатенировать полученные значения из url и запускать запрос за один раз.

Это сценарий, который у меня есть. И окончательный запрос будет выглядеть так, как я написал выше.

ТИА

ответ

0

Ok для вашего случая, вы можете условия цепи, как это:

$query = DB::table('table1') 
->join('table2', 'table1.id', '=', 'table2.table_id'); 

if ($request->has('state') && $request->state != '') { 
    //We have a state in the query and it's not empty 
    $query->where('table1.state', '=', $request->state); 
} 

if ($request->has('region') && $request->region != '') { 
    //We have a region in the query and it's not empty 
    $query->where('table1.region', '=', $request->region); 
} 

//We finished checking all our conditions 
//Finishing the query now... 

$l = $query->paginate(12); 
+0

Спасибо. Проблема с построителем запросов заключается в том, что я запускаю скрипт поиска, и мне нужно какое-то конкатенацию в запросе в соответствии с условием. Написание запроса каждый раз, основываясь на состоянии, не является хорошей идеей, я думаю. И DB :: raw() возвращает массив, что разбиение на страницы не работает. –

+0

Вы можете попробовать третий вариант. Он позволяет запускать необработанный запрос; – EddyTheDove

+0

Да, но это не позволяет использовать разбиение на страницы() на нем –