Ich arbeite an einem Event-Buchungssystem. Wenn der Benutzer nach einem Datumsbereich sucht, verwende ich eine Funktion in meinem Event
-Modell, die überprüft, ob das Ereignis verfügbar ist. Meine Suchfunktion funktioniert derzeit wie folgt:Laravel Schleife Abfrage Ergebnis, dann paginieren
Ich kann die Verfügbarkeit im Query Builder nicht überprüfen, also muss ich durchlaufen. Ich verwende eine Illuminate\Database\Eloquent\Collection
, weil ich Ereignisse aus der paginierten Sache, die ich vom Abfrage-Generator erhalte, nicht entfernen kann.
Gibt es eine Möglichkeit, die Eloquent Collection in eine paginierte Collection zu konvertieren?
Vielen Dank im Voraus!
P.S. Ich übergebe $request
an die Ansicht, appends()
zu verwenden, damit ich die Abfrage-Zeichenfolge-Parameter während Paginierung beibehalten kann.
EDIT: Die is_available
Funktion
public function is_available($from, $to) {
$from = Carbon::createFromFormat('d-m-Y', $from);
$to = Carbon::createFromFormat('d-m-Y', $to);
foreach($this->not_availables as $notAvailable) {
$notAvailableFrom = Carbon::createFromFormat('Y-m-d', $notAvailable->from);
$notAvailableTo = Carbon::createFromFormat('Y-m-d', $notAvailable->to);
if ($from->gte($notAvailableFrom) OR $to->lte($notAvailableTo)) {
return false;
}
}
return true;
}
Kannst du '-> whereBetween ('event_date', [$ from, $ to])' 'in deinem Query Builder verwenden? Wir können nicht sehen, was Ihre 'is_available ($ from, $ to)' Funktion tut, aber ich gehe davon aus, dass Sie es manuell überprüfen. –
@Ciccio Leider nicht. Wir speichern die Zeiträume, in denen Ereignisse nicht in einer separaten Tabelle verfügbar sind. Diese Tabelle enthält die ID des Ereignisses und ein Datum von und bis zur Nichtverfügbarkeit. Methode wurde zu meiner Frage hinzugefügt. –