2017-07-07 58 views
1

例如我已經以下代碼:如何格式化(轉換)laravel數據庫分頁結果?

public function index() 
{ 
    return 
     Model::select(['id', 'some_field', ...// more some fields]) 
      ->with('data') // load relation 
      ->paginate(20); 
} 

如何格式化(變換/操縱上)中獲得從數據庫中的數據?

CakePHP的ORM有有用的方法本 - https://book.cakephp.org/3.0/en/orm/query-builder.html#adding-calculated-fields & & https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#map-reduce

但我無法找到任何東西,可以幫助我做了同樣的事情在Laravel。 我可以重寫模型中的「toArray」方法,但這會影響所有應用程序部件(不僅是我的控制器中的索引操作)。

+0

您可以在返回的集合上使用'map'。 –

回答

2

你可以做同樣的事情在Laravel,例如:

return Model::select(['id', 'some_field', ...// more some fields]) 
->with('data') 
->paginate(20) 
->map(function($item, $key) { 
    // Some pseudo code 
    $item->uid = uniqid(); 

    // Must return the $item 
    return $item; 
}); 

還有其他的方法做類似的事情。您可以在Laravel中進行更多操作。還有一個transform方法,其中很多。

1

paginate()get()將返回Collection,讓您訪問所有Collection methods

您將能夠做到:

public function index() 
{ 
    return 
     Model::select(['id', 'some_field', ...// more some fields]) 
      ->with('data') // load relation 
      ->paginate(20) 
      ->map(function($model) { 
       $model->total_things = $model->one_thing + $model->other_thing; 
       return $model; 
      }); 
} 
相關問題