2016-07-29 4 views
1

私はLaravelで、Oracleデータベースに対して以下の処理を行うAPIを構築しています。ページネーゼリAPI Laravel

select * from table_a;ここで

は、APIコードです:

$response = []; 
try { 
    $response['status']  = 200; 
    $response['message'] = 'ok'; 
    $response['parameters'] = []; 
    $obj     = DB::select("SELECT * FROM table_a"); 
    if (!empty($obj) && count($obj)) { 
     $response['result'] = $obj; 
    } 
    else { 
     $response['result'] = 'Requested data not found'; 
    } 
} 
catch (\Exception $e) { 
    $response['status']  = 400; 
    $response['message'] = 'ok'; 
    $response['parameters'] = []; 
    $response['result']  = 'Sorry! bad request'; 
} 

return response()->json($response); 

table_aは3000万以上のレコードを持っています。私はAPIの結果を改ページする必要があります。カウントクエリを実行するのに数分かかるため、毎回テーブルレコードをカウントすることはできません。どのように効率的に入手できますか?

答えて

0

->paginate('n')で結果を改ページできます。 Laravelによって提供されるpaginateメソッドは、ユーザーが表示している現在のページに基づいて適切な制限とオフセットを自動的に設定します。既定では、現在のページは、HTTP要求の?pageクエリ文字列引数の値によって検出されます。この場合

は、我々はページごと15項目を表示したいことを指定しましょう:

namespace App\Http\Controllers; 

use DB; 
use App\Http\Controllers\Controller; 

class UserController extends Controller 
{ 
    /** 
    * Show all of the users for the application. 
    * 
    * @return Response 
    */ 
    public function index() 
    { 
     $users = DB::table('users')->paginate(15); 

     return view('user.index', ['users' => $users]); 
    } 
} 
+0

私はそれは、Oracleレベルでストアドプロシージャを使用してしまうので、Oracleのテーブル(複数可)を使用する必要があります。それは普通のテーブルではありません。 – dang