2015-06-05 90 views
1

我需要按日期搜索。我的路由定義:Laravel按日期搜索不工作

Route::get('/calendar/days?day={date}', '[email protected]'); 

enter image description here

在控制器方法我有這樣的:

public function getDays($date) 
{ 
    $articles = Article::where('published_at','=',$date)->get(); 
    dd($articles); 
} 

當您在圖像上單擊下面的鏈接,我得到一個NotFoundHttpException

鏈接使用JS生成。這可能是問題嗎?

回答

1

您不應該在路由定義中定義查詢字符串參數。有關詳細解釋,請參閱this answer。所以你的情況,你有兩個選擇:

自定義刪除?day={date}

Route::get('/calendar/days', '[email protected]'); 

而在你的控制器訪問請求輸入參數,像這樣:

use Illuminate\Http\Request; 

... 

public function getDays(Request $request) 
{ 
    $date = $request->input('date'); 
    $articles = Article::where('published_at', '=', $date)->get(); 
} 

2.修改您的路線定義如下:

Route::get('/calendar/days/{date}', '[email protected]'); 

你的控制器代碼現在需要在這種情況下沒有變化,但是通過JavaScript你生成的鏈接需要是這樣的:

<a href="/calendar/days/2015-04-09">9</a> 
+0

由於選擇了第二種方式) – Rai

+0

非常歡迎。 – Bogdan

+0

這可能是一個單獨的問題。數據庫中的'published_at'列的格式是什麼?它是否遵循'YYYY-MM-DD'這樣的模式,就像在你的'where'條件下一樣?因爲如果它是'datetime',例如它可能被存儲爲'YYYY-MM-DD HH:MM:SS',如果只傳遞日期,它將不會返回任何結果。 – Bogdan