2017-03-27 149 views
1

我有一個包含兩個日期的表:起始日期日期和結束日期。這兩列都是字符串。當我嘗試查詢以獲取與這些日期比較的記錄時,Laravel將它們視爲字符串而不是日期。Laravel 5.2比較字符串的日期?

例如,對於這個查詢:

Schedule::whereDate('start_date','<=',date('m/d/Y'))->whereDate('end_date','>=',date('m/d/Y'))->get(); 

沒有結果返回,這是不正確的。

有什麼想法?或者任何其他方式比較字符串的日期?

謝謝。

+0

爲什麼列字符串工作的偉大?你必須做一個字符串比較,這可能不會有用。你將不得不在mysql或laravel中做一些令人討厭的詭計來完成這項工作。我會看看我能否找出一個例子,但真正的解決方案是從字符串轉換爲日期。 – mkaatman

+0

不知道爲什麼他們不是創建日期時間,但這是我目前的。我希望可以有選擇查詢字符串作爲日期。 – danboh

回答

2

你需要讓這些列datetime而不是字符串:

$table->dateTime('start_date'); 
$table->dateTime('end_date'); 

而且,這是一個好主意,這些列添加到$dates陣列:

protected $dates = ['created_at', 'updated_at', 'start_date', 'end_date']; 
+0

謝謝。我會試着去理解改變這些領域爲datetime因爲已經有內置比較現有的字符串(這最有可能是錯的) – danboh

+0

更改列日期時間的伎倆一些邏輯的影響,只是要改變這裏的幾個疑問那裏。謝謝! – danboh