# Each and Fetch

Collection inherits from [`Enumerable(T)`](https://crystal-lang.org/api/latest/Enumerable.html) therefore it allows all the methods defined by the module. When calling enumeration via `each` or `map`or any other methods defined in `Enumerable(T)`, the collection is resolved and SQL request is triggered.

## Collection(T)#each

Return the list of models returned by the request:

```ruby
Post.query.where(user_id: 1).each do |posts|
    # Do something with the posts
end
```

## Collection(T)#fetch

Fetch stands for iterating through hash instead of model. While offering less features (as we do not connect a model to the data), it offers best performances, as no extra-allocations are made:

```ruby
Post.query.where(user_id: 1).fetch do |posts|
    puts "#{post["id"]} - #{post["name"]}"
end
```
