File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -98,6 +98,37 @@ User::select([
98
98
> The ` Alias ` class in isolation is not that usefull because Eloquent can already do this.
99
99
> But it will be used more in the next examples.
100
100
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
+
101
132
### Operators
102
133
103
134
#### Arithmetic Operators
You can’t perform that action at this time.
0 commit comments