Skip to content

Instantly share code, notes, and snippets.

@JeffreyWay
Created August 16, 2013 17:53
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save JeffreyWay/6252012 to your computer and use it in GitHub Desktop.
Save JeffreyWay/6252012 to your computer and use it in GitHub Desktop.
Sometimes, when filtering through a collection and displaying them on the page, you need to wrap every X items within a wrapper. Common examples are when using Bootstrap... Is this the recommended way to do that? Fairly clean as it is, I guess...
@foreach(array_chunk($posts, 3) as $postSet)
<div class="row"> <!-- this div will surround every three posts -->
@foreach($postSet as $post)
<h3>{{ $post['title'] }}</h3>
@endforeach
</div>
@endforeach
@JeffreyWay
Copy link
Author

I guess this is fine as is...was just curious if there was an alternative.

@zackkitzmiller
Copy link

There's a solution involving an additional partial, but I'm not sure if it's 'cleaner.'

@dhrrgn
Copy link

dhrrgn commented Aug 16, 2013

An alternative...a little harder to understand than yours, but just proposing it as an alternative

Edit: Downside is you would have extra h3 tags sitting there too (although you could fix that).

@for($i = 0, $count = count($posts); $i < $count; $i += 3)
   <div class="row"> <!-- this div will surround every three posts -->
        <h3>{{ array_get($posts, $i.'.title') }}</h3>
        <h3>{{ array_get($posts, ($i + 1).'.title') }}</h3>
        <h3>{{ array_get($posts, ($i + 2).'.title') }}</h3>
    </div>
@endforeach

@JeffreyWay
Copy link
Author

Or you could use the modulus trick. Mostly was wondering if there was any secret Eloquent method for handling this. I guess array_chunk is the easiest way to go about it.

@ammonkc
Copy link

ammonkc commented Aug 16, 2013

I was actually looking for this exact solution yesterday. This is much cleaner than what I came up with. Thanks.

@taylorotwell
Copy link

Hmm.. I can't think of anything much cleaner. Like Zack said maybe a partial thing. I dunno.

@tyler43636
Copy link

Whenever I try this, array_chunk complains about getting an object instead of an array. I'm passing an Eloquent model. Any tips?

@vishnupadmanabhan
Copy link

Try:

@foreach(array_chunk($posts->all(), 3) as $postSet)

instead of:

@foreach(array_chunk($posts, 3) as $postSet)

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