@@ 9-39 (lines=31) @@ | ||
6 | use Illuminate\Database\Eloquent\Scope; |
|
7 | use Illuminate\Database\Eloquent\Builder; |
|
8 | ||
9 | class NotNullSlugScope implements Scope |
|
10 | { |
|
11 | /** |
|
12 | * Apply the scope to a given Eloquent query builder. |
|
13 | * |
|
14 | * @param \Illuminate\Database\Eloquent\Builder $builder |
|
15 | * @param \Illuminate\Database\Eloquent\Model $model |
|
16 | * @return void |
|
17 | */ |
|
18 | public function apply(Builder $builder, Model $model) |
|
19 | { |
|
20 | $builder |
|
21 | ->whereNotNull($model->getTable() . '.slug') |
|
22 | ->where($model->getTable() . '.slug', '!=', ''); |
|
23 | ||
24 | $this->extend($builder); |
|
25 | } |
|
26 | ||
27 | /** |
|
28 | * Extend Builder with following macros. |
|
29 | * |
|
30 | * @param \Illuminate\Database\Eloquent\Builder $builder |
|
31 | * @return void |
|
32 | */ |
|
33 | public function extend(Builder $builder) |
|
34 | { |
|
35 | $builder->macro('allowNullSlug', function (Builder $builder) { |
|
36 | return $builder->withoutGlobalScope($this); |
|
37 | }); |
|
38 | } |
|
39 | } |
|
40 |
@@ 10-44 (lines=35) @@ | ||
7 | use Illuminate\Database\Eloquent\Scope; |
|
8 | use Illuminate\Database\Eloquent\Builder; |
|
9 | ||
10 | class ValidatedScope implements Scope |
|
11 | { |
|
12 | /** |
|
13 | * Apply the scope to a given Eloquent query builder. |
|
14 | * |
|
15 | * @param \Illuminate\Database\Eloquent\Builder $builder |
|
16 | * @param \Illuminate\Database\Eloquent\Model $model |
|
17 | * @return void |
|
18 | */ |
|
19 | public function apply(Builder $builder, Model $model) |
|
20 | { |
|
21 | $builder |
|
22 | ->where(function ($query) use ($model) { |
|
23 | $query |
|
24 | ->whereNull($model->getTable() . '.validated_at') |
|
25 | ->orWhere($model->getTable() . '.validated_at','>=',Carbon::now()->format('Y-m-d H:i:s')); |
|
26 | }); |
|
27 | ||
28 | ||
29 | $this->extend($builder); |
|
30 | } |
|
31 | ||
32 | /** |
|
33 | * Extend Builder with following macros. |
|
34 | * |
|
35 | * @param \Illuminate\Database\Eloquent\Builder $builder |
|
36 | * @return void |
|
37 | */ |
|
38 | public function extend(Builder $builder) |
|
39 | { |
|
40 | $builder->macro('withoutValidated', function (Builder $builder) { |
|
41 | return $builder->withoutGlobalScope($this); |
|
42 | }); |
|
43 | } |
|
44 | } |
|
45 |