web-dev-qa-db-fra.com

Laravel Eloquent limite et offset

C'est à moi

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

Je veux juste prendre un «produit» limite C'est une mauvaise façon

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

S'il vous plaît donnez-moi un coup de main!

Merci!

19
Sang Trần

Vous pouvez utiliser les fonctions skip et take comme ci-dessous:

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

// skip doit être passé param en tant que valeur entière pour ignorer les enregistrements et l'index de départ

// take obtient une valeur entière pour obtenir le no. des enregistrements après l'index de départ défini par skip

MODIFIER

Pardon. Votre question m'a mal comprise. Si vous voulez quelque chose comme la pagination, la méthode forPage fonctionnera pour vous. La méthode forPage fonctionne pour les collections.

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

par exemple

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

laravel a sa propre fonction skip pour offset et take pour limit. juste comme ci-dessous exemple de requête Laravel: -

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

Rapide:

Laravel utilise une méthode de pagination rapide, paginate, qui ne nécessite que le nombre de données affichées par page.


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

comment personnaliser la pagination:

vous pouvez utiliser cette méthode: offsetlimit, skiptake

  • offset , limit: où commence le réglage de l'offset, limitant la quantité de données à interroger

  • sauter , prendre: sauter saute quelques données et prend beaucoup de données

par exemple:


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));
    }
}


0
water_ak47

Essayez cet exemple de code:

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

$products = $art->products->take($limit);
0