2017-06-05 2 views
1

ich benutze Laravel 5.4 und das ist mein Anwendungsfall:Laravel 5.4 Abfrage zu überprüfen, ob Wert vorhanden ist zwischen den Tasten/Werte eines Arrays

ich eine Liste von Lessons haben, wird jede Lesson mit einem bestimmten zugehörigen User und hat eine date, star_at und end_at Felder. In dem Formular, dass ich hinzufügen/bearbeiten Lessons Ich muss eine Validierungsprüfung (wir wählen das Datum, starten und enden im Formular): - Die neue Lesson sollte nicht im Zeitbereich sein (start_at ->end_at) einer anderen Lektion während der ausgewählten date.

Also habe ich eine Abfrage alle Lessons abzurufen (als ein Array von Schlüssel (start_at) & Wert (end_at)) des aktuellen User wo date = das gewählte Datum in der Form.

Nun muss ich überprüfen, ob der Wert start_at, den wir im Formular gewählt haben, im Zeitbereich eines der abgerufenen Lessons Array-Datensätze existiert. und vielleicht dann den Fehler anzeigen (Es gibt bereits eine Lektion in diesem Zeitraum an diesem Datum).

Bitte helfen Sie, es kann ein bisschen unklar sein, aber ich kann weiter erklären, wenn Sie brauchen.

Vielen Dank im Voraus.

+1

Wenn Sie eine neue Lektion hinzufügen, sollte sie nicht in der Reichweite einer anderen Lektion dieses bestimmten Benutzers liegen? Habe ich recht ? –

+0

Können Sie Ihren Controllercode veröffentlichen? – whoacowboy

Antwort

2

Basierend auf meinem Verständnis der Frage, sollte der folgende Code den Trick tun. Ändern Sie die Modell- und Feldnamen basierend auf Ihrer Anwendung.

protected function store() 
{ 
    $input = request()->all(); 

    $lessons = Lesson::whereDate('date', Carbon::parse($input['date'])) 
     ->where('start_at', '>=', Carbon::parse($input['start_at'])) 
     ->where('end_at', '<=', Carbon::parse($input['start_at'])) 
     ->count(); 

    if ($lessons) { 
     // lesson in exists on this date in the given time frame. 
     // handle error 
    } 

    Lesson::create($input); 

    // handle success 
} 
+0

Danke, das war der Weg. – dwix

Verwandte Themen