0
votes

Query Laravel entre deux dates de la base de données de deux colonnes de date

J'ai une base de données events code> et il a 2 dates colonne nommée date_from code> qui fait référence à la date de début et date_to code> fait référence à la date de fin. La colonne event_date code> est quand l'événement est-il affiché. Ma question est de savoir comment puis-je interroger cela en utilisant l'éloquent? J'ai essayé ce code mais cela me renvoie une erreur. Type Erreur: Argument 2 passe à Illuminate \ Base de données \ Query \ Builder Code>

Query p>

| 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    |                |
+-------------+------------------+------+-----+---------+----------------+


3 Réponses :


0
votes

Je viens de résoudre le problème en utilisant deux Whareraw code> instructions

$ maintenant = carbone :: Maintenant () -> TODATEDRING (); CODE> P>

$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();


0 commentaires

1
votes
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();

1 commentaires

quelque chose de similaire avec le mien



2
votes
  • J'ai essayé cela et cela fonctionne pour moi une plage de dates à deux colonnes avec deux entre dates p>

      | # | name    | from_date  | to_date    |
      | ----------- | ---------  | ---------- |-
      | 1 | Kishor  | 2021-05-17 | 2021-05-25 |
      | 2 | Martin  | 2021-05-24 | 2021-05-24 |
    
    
      select * from TableName  (`date_to` >= $from_date and `date_from` <= $to_date) 
    
      $query->where(function($query) use ($from, $to){
             $query->where('date_to', '>=', $from)
                ->where('date_from', '<=', $to);
             });
    

0 commentaires