簡體   English   中英

從Laravel模型檢索記錄

[英]Retrieve records from laravel model

我有一個Laravel應用程序,我有一個帶有780950個寄存器的數據庫表,因此,當我雄辯地檢索它時,它要花很長時間,然后給出超出時間的錯誤。 有沒有辦法檢索例如前30條記錄? 我嘗試了這個:

mymodel::all()->take(30)->get();

但是是一樣的。 所以,我只說了:

mymodel::where('id','<','30')->get();

它可以工作,但這不是我想要的,因為我想分頁並顯示所有記錄。 因此,我知道記錄很多,但是如果我可以檢索到前30條記錄,然后使用ajax檢索另外30條記錄。 那么在Laravel 5.3中實現這一目標的最佳,更優雅的方法是什么?

您可以使用skip()take()

mymodel::skip(0)->take(30)->get();

另一種方法是使用chunk()通過塊獲取數據:

mymodel::chunk(200, function ($flights) {
    foreach ($flights as $flight) {
        //
    }
});

當您執行Model::all()->take(30)->get(); ,實際上是在說“檢索所有數據庫記錄,然后給我前30條記錄”。 因此,您將僅加載前30條記錄就加載全部800,000條記錄。

如果您想要分頁,則實際要做的是:

$models = Model::paginate($perPage);

paginate()方法將根據URL中的查詢字符串自動確定當前頁面,並給您返回一個對象,您可以將其傳遞給視圖以進行分頁。

<div class="container">
    @foreach ($models as $model)
        {{ $model->name }}
    @endforeach
</div>

{{ $models->links() }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM