2016-07-25 10 views
1

Laravelアプリケーションにはイベントがあります。その中には過去に起こったものもあれば、過去に起こったものや、今後開催されるものもあります。テーブル「イベント」次のようになります。Laravel:過去と未来のイベントにユーザーがアクセスするのを防ぐ

+----+-------------+------------+-------------------+---------------------+---------------------------+---------------------+---------------------+ 
| id | category_id | event_name | event_description | event_startdate  | event_closedate   | created_at   | updated_at   | 
+----+-------------+------------+-------------------+---------------------+---------------------------+---------------------+---------------------+ 
| 1 |   1 | Event 1 | Event 1   | 2016-05-02 00:00:00 | 2016-06-30 00:00:00  | 2016-07-07 15:59:03 | 2016-07-08 12:26:07 | 
| 2 |   1 | Event 2 | Event 2   | 2016-06-02 00:00:00 | 2016-07-30 00:00:00  | 2016-07-07 15:59:03 | 2016-07-08 12:26:22 | 
| 3 |   2 | Event 3 | Event 3   | 2016-07-02 00:00:00 | 2016-08-19 00:00:00  | 2016-07-07 15:59:03 | 2016-07-08 12:27:04 | 
| 4 |   2 | Event 4 | Event 4   | 2016-09-01 00:00:00 | 2016-10-30 00:00:00  | 2016-07-07 15:59:03 | 2016-07-07 15:59:03 | 
+----+-------------+------------+-------------------+---------------------+---------------------------+---------------------+---------------------+ 

を、各イベントは次のように表があるため項目数含まれています

+----+------------+-----------+-----------------------+ 
| id | event_id | item_name | item_description  | 
+----+------------+-----------+-----------------------+ 
| 1 |   1 | Item 1 | Item 1 - description | 
| 2 |   1 | Item 2 | Item 2 - description | 
| 3 |   2 | Item 3 | Item 3 - description | 
| 4 |   2 | Item 4 | Item 4 - description | 
| 5 |   3 | Item 5 | Item 5 - description | 

私はホームページ上の現在のイベントを表示しています。この例では、イベント2と3が現在のイベントです。各イベントには、そのイベントに属するアイテムを表示するためのリンクがあります。

http://localhost:5000/event/2/items 
http://localhost:5000/event/3/items 

ユーザーは、非現在のイベント(過去と将来のイベントなど)を表示できないようにしたいと考えています。この例では、それがユーザーに行くしようとした場合のページ(または類似)を示すべきである「が見つかりません」を意味:

http://localhost:5000/event/1/items 
http://localhost:5000/event/4/items 

どのようにこれを防止することができますか?

答えて

4

findOrFail()メソッドを追加句とともに使用できます。

public function show($eventId) 
{ 
    $now = Carbon::now(); 
    $event = Event::where('event_startdate', '<=', $now) 
     ->where('event_closedate', '>=', $now) 
     ->findOrFail($eventId); 

    //returning specific view 
} 
+0

これは魅力的です。それを自分自身について考えるべきだったのです:-) – wiwa1978

関連する問題