我试图创建一个报告页面,显示从特定日期到特定日期的报告。这是我当前的代码:
$now = date('Y-m-d');
$reservations = Reservation::where('reservation_from', $now)->get();
这在普通SQL中所做的是从表中选择*,其中reservation_from = $now。
我在这里有这个问题,但我不知道如何将其转换为雄辩的问题。
SELECT * FROM table WHERE reservation_from BETWEEN '$from' AND '$to
如何将上面的代码转换为雄辩的查询?
我的答案是有效的,谢谢你Artisan Bay,我读了你的评论,使用wheredate()
它工作
public function filterwallet($id,$start_date,$end_date){
$fetch = DB::table('tbl_wallet_transactions')
->whereDate('date_transaction', '>=', $start_date)
->whereDate('date_transaction', '<=', $end_date)
->get();
我已经创建了模型作用域
要了解更多关于范围的信息,请查看以下链接:
laravel.com/docs/eloquent # query-scopes
medium.com/@janaksan / using-scope-with-laravel
代码:
/**
* Scope a query to only include the last n days records
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeWhereDateBetween($query,$fieldName,$fromDate,$todate)
{
return $query->whereDate($fieldName,'>=',$fromDate)->whereDate($fieldName,'<=',$todate);
}
在控制器中,将Carbon Library添加到顶部
use Carbon\Carbon;
从现在开始获取最近十天的记录
$lastTenDaysRecord = ModelName::whereDateBetween('created_at',(new Carbon)->subDays(10)->startOfDay()->toDateString(),(new Carbon)->now()->endOfDay()->toDateString() )->get();
从现在开始获取过去30天的记录
$lastThirtyDaysRecord = ModelName::whereDateBetween('created_at',(new Carbon)->subDays(30)->startOfDay()->toDateString(),(new Carbon)->now()->endOfDay()->toDateString() )->get();