人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel で DBのデータを 「表示させるタイマー時刻内に限定する」スコープを作成する

● Laravel で DBのデータを 「表示させるタイマー時刻内に限定する」スコープを作成する

開始タイマーと終了タイマー二つを作成します

( DBのカラム view_start_date が 現在時刻を超えたデータのみに限定する )

    /**
     * ● ローカルスコープ : ->withinStartTime() で 「表示タイマー開始」を現在時刻が過ぎた slide に限定する
     *
     * @param    \Illuminate\Database\Eloquent\Builder    $query
     * @return   \Illuminate\Database\Eloquent\Builder
     */
     public function scopeWithinStartTime( \Illuminate\Database\Eloquent\Builder $query )
     {
         return   $query->whereNull('view_start_date')
                        ->orWhere(function($query) {
                            $query->whereNotNull('view_start_date')
                                  ->where('view_start_date','<=', \DB::raw('NOW()') );
                        });
     }

( DBのカラム view_end_date が 現在時刻を超えていないデータのみに限定する )

    /**
     * ● ローカルスコープ : ->withinEndTime() で 「表示タイマー終了」を現在時刻が過ぎていない slide に限定する
     *
     * @param    \Illuminate\Database\Eloquent\Builder    $query
     * @return   \Illuminate\Database\Eloquent\Builder
     */
     public function scopeWithinEndTime( \Illuminate\Database\Eloquent\Builder $query )
     {
         return   $query->whereNull('view_end_date')
                        ->orWhere(function($query) {
                            $query->whereNotNull('view_end_date')
                                  ->where('view_end_date','>',\DB::raw('NOW()') );
                        });
     }

表示タイマー内のデータに限定する

$data_loop = $model->withinStartTime()->withinEndTime()->get();
No.1632
11/30 14:23

edit