簡體   English   中英

Laravel-使用雄辯的語言在開始日期和結束日期之間選擇行

[英]Laravel - select row between start date and end date using eloquent

我想將此查詢轉換為雄辯的laravel,

select * from schedule where (now() between start_date and end_date);

我嘗試使用whereBetween,但是出現了一些錯誤。

$schedule = Schedule::whereBetween(Carbon::now(), ['start_date', 'end_date'])->get();

錯誤看起來像這樣

Connection.php第647行中的QueryException:SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ 2017-06-01 06:17:30”(SQL:從schedule中選擇* 2017-06-01 06:17:30在開始日期和結束2017-06-01 06:17:30之間2017-06-01 06:17:30

任何想法?

$schedule = Schedule::where('start_date', '<=', Carbon::now())
    ->where('end_date', '>=', Carbon::now())
    ->get();

要么

$schedule = Schedule::whereRaw('(now() between start_date and end_date)')->get();

僅當您要查找單列在2個值之間的行時,才使用whereBetween:

$now = Carbon::now();
$schedule = Schedule::where('start_date', '<=', $now)
    ->where('end_date', '>=', $now)
    ->get();
$from = $request->from;
$to = $request->to;
$title="Sales From: ".$from." To: ".$to;
$sales = Sale::whereBetween('created_at', [$from.' 00:00:00',$to.' 23:59:59'])->get();

whereBetween應該使用這樣->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))其第一個參數是列名,第二個是該區域。

在您的情況下,可以使用->where('start_date', '<' Carbon::now())->where('end_date', '>' Carbon::now());

您可以使用whereBetween('date_field',[$from_date, $to_date])來獲取兩個日期之間的數據,但該數據應采用數組格式。

$products = Sale::with('products')
    ->whereBetween('date',[$from_date, $to_date])
    ->get();
return response()->json($products);

您還可以將whereBetween(whereBetween('date_field',[$from_date, $to_date]))與多個where條件一起使用,例如:

$products = Sale::with('products')
    ->whereBetween('date',[$from_date, $to_date])
    ->where(function ($query) use ($search) {
    $query->where('employee_id', 'like', '%'.$search.'%')
          ->orWhere('employee_name', 'like', '%'.$search.'%');
    })
    ->get();
return response()->json($products);

我希望這對您有用:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM