laravel eloquent limit offset

laravel - limit result eloquent



Laravel Elocuente límite y offset. (6)

Esto es mío

$art = Article::where(''id'',$article)->firstOrFail(); $products = $art->products;

Sólo quiero tomar un límite ''producto'' Esto es incorrecto

$products = $art->products->offset($offset*$limit)->take($limit)->get();

¡Por favor, échame una mano!

¡Gracias!


Rápido:

Laravel tiene un método de paginación rápida, paginación, que solo necesita pasar la cantidad de datos mostrados por página.

//use the paginate Book::orderBy(''updated_at'', ''desc'')->paginate(8);

cómo personalizar la paginación:

puede utilizar estos métodos: offset , limit , skip , take

  • offset, límite: ¿dónde comienza la configuración de desplazamiento, limitando la cantidad de datos a consultar?

  • skip , take: skip omite algunos datos y toma muchos datos

por ejemplo:

Model::offset(0)->limit(10)->get(); Model::skip(3)->take(3)->get(); //i use it in my project, work fine ~ class BookController extends Controller { public function getList(Request $request) { $page = $request->has(''page'') ? $request->get(''page'') : 1; $limit = $request->has(''limit'') ? $request->get(''limit'') : 10; $books = Book::where(''status'', 0)->limit($limit)->offset(($page - 1) * $limit)->get()->toArray(); return $this->getResponse($books, count($books)); } }


Laravel tiene función propia, skip para offset y take para limit . Al igual que a continuación el ejemplo de la consulta de laravel: -

Article::where([[''user_id'',''='',auth()->user()->id]]) ->where([[''title'',''LIKE'',"%".$text_val."%"]]) ->orderBy(''id'',''DESC'') ->skip(0) ->take(2) ->get();


Por favor, intente de esta manera,

return Article::where(''id'',$article)->with([''products''=>function($products, $offset, $limit) { return $products->offset($offset*$limit)->limit($limit); }])


Pruebe este código de ejemplo:

$art = Article::where(''id'',$article)->firstOrFail(); $products = $art->products->take($limit);


Puede usar las funciones skip y take como se muestra a continuación:

$products = $art->products->skip($offset*$limit)->take($limit)->get();

// skip debe pasar param como valor entero para omitir los registros y el índice de inicio

// take obtiene un valor entero para obtener el no. de registros después de iniciar el índice definido por skip

EDITAR

Lo siento. Fui mal entendido con tu pregunta. Si desea algo como la paginación, el método forPage funcionará para usted. El método forPage funciona para colecciones.

REf: https://laravel.com/docs/5.1/collections#method-forpage

p.ej

$products = $art->products->forPage($page,$limit);


skip = OFFSET $products = $art->products->skip(0)->take(10)->get(); //get first 10 rows $products = $art->products->skip(10)->take(10)->get(); //get next 10 rows

Desde laravel doc 5.2 https://laravel.com/docs/5.2/queries#ordering-grouping-limit-and-offset

saltar / tomar

Para limitar el número de resultados devueltos por la consulta, o para omitir un número dado de resultados en la consulta (OFFSET), puede usar los métodos de omitir y tomar:

$users = DB::table(''users'')->skip(10)->take(5)->get();

En laravel 5.3 puede escribir ( https://laravel.com/docs/5.3/queries#ordering-grouping-limit-and-offset )

$products = $art->products->offset(0)->limit(10)->get();