Skip to content

Commit 1effa90

Browse files
committed
docs: case-when
1 parent 580a7a0 commit 1effa90

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,37 @@ User::select([
9898
> The `Alias` class in isolation is not that usefull because Eloquent can already do this.
9999
> But it will be used more in the next examples.
100100
101+
#### Case-When
102+
103+
```php
104+
use Tpetry\QueryExpressions\Language\{
105+
CaseGroup, CaseRule,
106+
};
107+
108+
new CaseGroup(CaseRule[] $when, string|Expression|null $else = null)
109+
110+
// ALTER TABLE users ADD COLUMN "status" varchar(255) NOT NULL GENERATED ALWAYS AS (
111+
// CASE
112+
// WHEN ("reward_points" > 500000) THEN 'gold'
113+
// WHEN ("reward_points" > 100000) THEN 'silver'
114+
// WHEN ("reward_points" > 50000) THEN 'bronze'
115+
// ELSE 'none'
116+
// END
117+
// ) STORED
118+
Schema::table('users', function (Blueprint $table) {
119+
$statusByRewardPoints = new CaseGroup(
120+
when: [
121+
new CaseRule(new Value('gold'), new GreaterThan('reward_points', new Value(500_000))),
122+
new CaseRule(new Value('silver'), new GreaterThan('reward_points', new Value(100_000))),
123+
new CaseRule(new Value('bronze'), new GreaterThan('reward_points', new Value(50_000))),
124+
],
125+
else: new Value('none'),
126+
);
127+
128+
$table->string('status')->storedAs($statusByRewardPoints);
129+
});
130+
```
131+
101132
### Operators
102133

103134
#### Arithmetic Operators

0 commit comments

Comments
 (0)