2016-05-13 60 views
-1

您好我希望儘量減少這樣的代碼:如何在laravel中優化查詢?

if (empty(Input::get('channelName'))) { 
    $channels = Channel::orderBy('updated_at', 'desc')->paginate($perPage)->setPath('?limit=' . $perPage); 
} else { 
    $channels = Channel::where('name', 'like', '%' . Input::get('channelName') . '%')->orderBy('updated_at', 'desc')->paginate($perPage)->setPath('?limit=' . $perPage); 
} 

回答

0
$channels = Channel::orderBy('updated_at', 'desc')->paginate($perPage)->setPath('?limit=' . $perPage); 

    if (empty(Input::get('channelName'))) { 
     $channels = $channels->get(); 
    } else { 
     $channels = $channels->where('name', 'like', '%' . Input::get('channelName') . '%')->get(); 
    } 
0

Query Builder是一個很酷的「事情」,因爲它可以讓你你需要鏈的方法。這使得根據我們的需要靈活地追加查詢語句。

$channelsQuery = Channel::orderBy('updated_at', 'desc'); 
if (Input::has('channelName')) { 
    $channelsQuery = $channelsQuery->where('name', 'like', '%' . Input::get('channelName') . '%'); 
} 
$channels = $channelsQuery->paginate($perPage)->setPath('?limit=' . $perPage); 

你如果還可以使用Input::has('channelName')而不只是empty(Input::get('channelName'))