- Düzenlendi
Merhaba Arkadaşlar. Laravel 3 te pagination için bazı eksiklikler laravel 4 te kapatılıyor. Fakat laravel 3 kullanıyorsanız, sizle basit ama güzel bir pagination örneği paylaşmak isterim. Unutmayın ki bilgi paylaşıldıkça büyür. Lütfen paylaşım konusunda bencil olmayın.
Aşağıdaki kodlar inputtan gelen bir yada birden fazla kelimenin veritabanında aranıp sonuçların listelenmesi ile alakalı. İstediğiniz gibi uyarlayıp modifiye edebilirsiniz. PDO driver kullanıldığı için whitespace ve comma dışındaki regexp kodlarını çıkarabilirsiniz. Bilgi amaçlı verilmiştir. Saygılar.
Aşağıdaki kodlar inputtan gelen bir yada birden fazla kelimenin veritabanında aranıp sonuçların listelenmesi ile alakalı. İstediğiniz gibi uyarlayıp modifiye edebilirsiniz. PDO driver kullanıldığı için whitespace ve comma dışındaki regexp kodlarını çıkarabilirsiniz. Bilgi amaçlı verilmiştir. Saygılar.
class Search_Controller extends Base_Controller
{
public function action_index()
{
if(count(Input::get('page')) && Input::get('page') > 1){
$limit = (Input::get('page')-1)*10;
}
else{
$limit=0;
}
$terms = Input::get('search');
function search_split_terms($terms){
$terms = preg_replace("/\"(.*?)\"/e", "search_transform_term('\$1')", $terms);
$terms = preg_split("/\s+|,/", $terms);
$out = array();
foreach($terms as $term){
$term = preg_replace("/\{WHITESPACE-([0-9]+)\}/e", "chr(\$1)", $term);
$term = preg_replace("/\{COMMA\}/", ",", $term);
$out[] = $term;
}
return $out;
}
function search_transform_term($term){
$term = preg_replace("/(\s)/e", "'{WHITESPACE-'.ord('\$1').'}'", $term);
$term = preg_replace("/,/", "{COMMA}", $term);
return $term;
}
$terms = search_split_terms($terms);
$parts = array();
foreach($terms as $key){
$parts[] = "field_name LIKE '%$key%' ";
}
$parts = implode(' AND ', $parts);
$sql = "SELECT SQL_CALC_FOUND_ROWS id, fiel_name1, field_name2 FROM table_name WHERE $parts LIMIT $limit, 10";
$result = DB::query($sql);
$per_page=sizeof($result);
$total=DB::only('SELECT FOUND_ROWS()');
$results = Paginator::make($result,$total,10);
foreach ($results->results as $key) {
$data[]['info']=array($key->id,$key->field_name1,$key->field_name2);
}
$data['links']=$results->links();
return Response::json($data);
}