J'ai une base de données Query p> 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> | 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 :
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();
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();
quelque chose de similaire avec le mien
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);
});
Dupliqué possible de Laravel Eloquant: Comment utiliser WhereDate avec entre? A >