Skip to content

Instantly share code, notes, and snippets.

@ericlbarnes
Last active July 13, 2023 07:51
Show Gist options
  • Select an option

  • Save ericlbarnes/5771365 to your computer and use it in GitHub Desktop.

Select an option

Save ericlbarnes/5771365 to your computer and use it in GitHub Desktop.
Limit a foreach with Laravel blade
@foreach (array_slice($posts->toArray(), 0, 5) as $post)
<h1>{{ $post['title'] }}</h1>
@endforeach
@matiit

matiit commented Jun 13, 2013

Copy link
Copy Markdown

I see usecase for that. When you use the same data two times on the same view. In one place you use all of them, but somewhere else in the same view, you need just 3. Then it's good :)

@ericlbarnes

Copy link
Copy Markdown
Author

@bgallagh3r yes in an ideal situation you would just have the number you need. But some times you have special circumstances. :)

This particular use case was building a theme for an app and the $posts returned to the view was more than I needed. But other themes needed the additional. If that makes sense.

@briankiewel

Copy link
Copy Markdown

Even easier...

@foreach ($posts->slice(0, 5) as $post)

  <h1>{{ $post['title'] }}</h1>

@endforeach

@jrmadsen67

Copy link
Copy Markdown

@briankiewel - where is that doc'd? Like to read more on it

@briankiewel

Copy link
Copy Markdown

@jrmadsen67 Unfortunately not documented on laravel.com, but you can look at the code here. It's basically just a helper for what @ericbarnes is doing, but without having to run ->toArray()

@ericlbarnes

Copy link
Copy Markdown
Author

Brilliant! :)

@avxkim

avxkim commented Jun 12, 2014

Copy link
Copy Markdown

@briankiewel

Nice trick, thanks =)

@mlops

mlops commented Apr 16, 2015

Copy link
Copy Markdown

Perfect

@mlops

mlops commented Apr 16, 2015

Copy link
Copy Markdown

In my case I have One album Music with 2 discs. Each Disc 14 musics and musics came from same table music. I share with this just with the model and one single consult.. Thanks a lot its very helpful for me.

@aliharis

Copy link
Copy Markdown

This is great. Thank you.

@lyovkin

lyovkin commented Jul 31, 2015

Copy link
Copy Markdown

Perfect :) Thanks

@jvanremoortere

Copy link
Copy Markdown

Can you do this for an array that gets loaded from the translation files?

For example:

@foreach(trans('pages/team.team') as $teamMember)
   // Do something
@endforeach

But what if I need just the first 4 or 5?

@abetsagaral

Copy link
Copy Markdown

->take(20)->get();

@ryanbattles

Copy link
Copy Markdown

Just needed this for a dashboard view where we need the same data in different places, just modified a bit by limiting what is shown. Thanks for the solution, worked perfectly!

@Kras4ooo

Copy link
Copy Markdown
@foreach ($posts->slice(0, 5) as $post)
  <h1>{{ $post->title }}</h1>
@endforeach

It works perfect for me.

@ron4stoppable

Copy link
Copy Markdown
 @foreach ($posts->take(5) as $post)
    <h1>{{ $post->title }}</h1>
 @endforeach

is much cleaner, and works great

@powolnymarcel

Copy link
Copy Markdown

Yes sir ;) @ron4stoppable

@abubakar-iqbal

Copy link
Copy Markdown

@foreach($skills->user->take(5) as $user)
this one is great

@sajed5208

sajed5208 commented Sep 21, 2017

Copy link
Copy Markdown

@foreach ($products->take(5) as $product)

{{ $product->product_name}}


@Endforeach

@HninEiEaindray

Copy link
Copy Markdown

@foreach (array_slice($data, 0, 4) as $content)

@ezewer

ezewer commented Mar 27, 2018

Copy link
Copy Markdown

thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment