2014-10-16 1784 views
1

我正在嘗試使用created_at列獲得每週新用戶的數量。我試圖使用whereBetween語法,但它總是返回0,即使它假設以其他方式返回。如何在Laravel中使用whereBetween日期

{{ DB::table('users') 
       ->whereBetween('created_at', array(date("Y/m/d h:i:s", strtotime('sunday last week')), date("Y/m/d h:i:s", strtotime('saturday this week'))))->count(); }} 

有什麼建議嗎?

回答

1

查詢本身應按書面形式工作,但您可能需要驗證created_attimestamp,datedatetime類型的列。當您創建用戶表時,您是否使用遷移來創建用戶表,如果是,您是否指定$table->timestamps();?或者您是否手動定義了created_at列,並且可能將其設置爲字符串?

一對夫婦的其他(無關)建議:

•看樣子,你正在運行在一個視圖此查詢,使用刀片呼應計數。這個邏輯可以在其他地方更好地處理,也許在你的用戶模型中,並且控制器將結果傳遞給視圖。

•您可以用PHP的DateTime對象,更換簡化查詢您的date(...strtotime...)date_create(...)

$usersThisWeek = User::whereBetween(
    'created_at', array(
     date_create('sunday last week'), 
     date_create('saturday this week') 
    ))->count(); 
+0

是,查詢執行了,但我沒有得到所需的輸出。 'created_at'列是'timestamp'類型。將'date(... strtotime ...)'改成'date_create'做了魔術。謝謝 – Diamond 2014-10-17 05:09:46

相關問題