arel: add
This commit is contained in:
parent
7e23c828b3
commit
4907f96597
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"*.md": {
|
||||
"type": "cheat",
|
||||
"template": [
|
||||
"---",
|
||||
"title: {basename|capitalize}",
|
||||
"---"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
---
|
||||
title: Arel
|
||||
---
|
||||
|
||||
### Tables
|
||||
|
||||
```rb
|
||||
users = Arel::Table.new(:users)
|
||||
```
|
||||
|
||||
### Fields
|
||||
|
||||
```rb
|
||||
users[:name]
|
||||
users[:id]
|
||||
```
|
||||
|
||||
### `where` (restriction)
|
||||
|
||||
```rb
|
||||
users.where(users[:name].eq('amy'))
|
||||
# SELECT * FROM users WHERE users.name = 'amy'
|
||||
```
|
||||
|
||||
### `select` (projection)
|
||||
|
||||
```rb
|
||||
users.project(users[:id])
|
||||
# SELECT users.id FROM users
|
||||
```
|
||||
|
||||
### `join`
|
||||
|
||||
```rb
|
||||
users.join(photos)
|
||||
users.join(photos, Arel::Nodes::OuterJoin).on(users[:id].eq(photos[:user_id]))
|
||||
```
|
||||
|
||||
### `limit` / `offset`
|
||||
|
||||
```rb
|
||||
users.take(5) # => SELECT * FROM users LIMIT 5
|
||||
users.skip(4) # => SELECT * FROM users OFFSET 4
|
||||
```
|
||||
|
||||
### Aggregates
|
||||
|
||||
```rb
|
||||
users.project(users[:age].sum) # .average .minimum .maximum
|
||||
users.project(users[:id].count)
|
||||
users.project(users[:id].count.as('user_count'))
|
||||
```
|
Loading…
Reference in New Issue