簡體   English   中英

laravel 從兩個日期列數據庫的兩個日期之間查詢

[英]laravel query between two dates from two date columns database

我有一個數據庫events ,它有 2 個名為date_from的日期列,它指的是開始日期,而date_to是指結束日期。 event_date是發布事件的時間。 我的問題是如何使用 eloquent 進行查詢? 我嘗試了這段代碼,但它返回了一個錯誤。 Type error: Argument 2 passed to Illuminate\Database\Query\Builder

詢問

  $events = Event::where('school_id', '=', Auth::user()->school_id)
                      ->where('status', '=', 1)
                      ->where('active', '=', 1)
                      ->whereRaw("group_id in('$role', '0')")
                      ->whereBetween("date_from", "date_to" )
                      ->limit(2)
                      ->get();

數據庫結構

| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name        | varchar(191)     | NO   |     | NULL    |                |
| content     | text             | NO   |     | NULL    |                |
| group_id    | int(11)          | NO   |     | NULL    |                |
| event_date  | date             | YES  |     | NULL    |                |
| date_from   | date             | YES  |     | NULL    |                |
| date_to     | date             | YES  |     | NULL    |                |
| time_from   | time             | YES  |     | NULL    |                |
| time_to     | time             | YES  |     | NULL    |                |
| event_place | varchar(191)     | NO   |     | NULL    |                |
| image       | varchar(191)     | NO   |     |         |                |
| school_id   | int(11)          | NO   |     | NULL    |                |
| smsnotify   | int(11)          | NO   |     | 0       |                |
| appnotify   | int(11)          | NO   |     | 0       |                |
| status      | int(11)          | NO   |     | 0       |                |
| active      | int(11)          | NO   |     | 0       |                |
| updated_by  | varchar(191)     | YES  |     | NULL    |                |
| created_at  | timestamp        | YES  |     | NULL    |                |
| updated_at  | timestamp        | YES  |     | NULL    |                |
| users_id    | int(11)          | YES  |     | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+

我剛剛通過使用兩個whereRaw語句解決了它

$now = Carbon::now()->toDateString();

$events = Event::where('school_id', '=', Auth::user()->school_id)
                      ->where('status', '=', 1)
                      ->where('active', '=', 1)
                      ->whereRaw("group_id in('$role', '0')")
                      ->whereRaw("date_from <=  date('$now')")
                      ->whereRaw("date_to >=  date('$now')")
                      ->limit(2)
                      ->get();
Use whereColumn of laravel query builder like this.

$events = Event::where('school_id', '=', Auth::user()->school_id)
                      ->where('status', 1)
                      ->where('active', 1)
                      ->whereRaw("group_id in('$role', '0')")
                       ->whereColumn([ ['date_from', '>=', 'event_date'], ['date_to', '<=', 'event_date'] ]);
                      ->limit(2)
                      ->get();

暫無
暫無

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

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