2016-04-14 8 views
2

I Eloquent Event-Modell, das auf mehrere Daten wie folgt verwandt:Laravel 5.2 am nächsten Tag von eloquent Sammlung erhalten

$event->dates // shows Collection of 8 Eloquent date models 

Danach muss ich das einzige Datum wählen, was am nächsten ist, aktuelle Zeit . Ich weiß, wie dies mit der Abfrage von Raw SQL oder DB-Klasse zu tun. Aber gibt es keine bessere Lösung? Ich möchte nicht in die Datenbank für Daten springen, die ich bereits habe.

Datumsformat in beredten Modellen ist überraschend Zeichenfolge.

+0

Sie ein Attribut Accessor I – atefth

+0

Ja denken können, ich bin mir dessen bewusst, dass. Wie aber kann ich aus Sammlungen eloquenter Modelle das nächstliegende Datum wählen? Trotzdem habe ich keine Ahnung, wie ich das schaffen soll. – Fusion

+0

Überprüfen Sie meine Antwort, ich denke, das ist es, was Sie erreichen möchten? – atefth

Antwort

2

können Sie verwenden, was wir Mutatoren wie dies in Laravel nennen ->

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Event extends Model 
{ 
    public function dates() 
    { 
     return $this->hasMany('Date'); 
    } 

    /** 
    * Get Dates for the event. 
    * 
    * @param string $value 
    * @return array 
    */ 
    public function getDates() 
    { 
     $dates = $this->dates()->getQuery()->orderBy('created_at', 'asc')->get(); 
     return $dates; 
    } 
} 

Hoffnung, das hilft.

UPDATE

Ich denke, jetzt können Sie auch dies wie dies in der Modelldefinition direkt tun -

return $this->hasMany('Date')->orderBy('created_at', 'asc') 
+0

getQuery() ist Ihre benutzerdefinierte Funktion? Just versucht dies, und Laravel 5.2 feuert Methode getQuery existiert nicht. Ausnahme. Außerdem konnte ich die Methode "getQuery" in offiziellen Dokumenten nicht erwähnen. Kannst du bitte erklären? – Fusion

+0

hast du die aktualisierte Antwort versucht? Wo rufe ich die Methode orderBy in der Beziehung selbst auf? Ich denke, getQuery ist von L5 veraltet ... – atefth

+0

Ja, ich habe es versucht und es funktioniert so ziemlich! Danke vielmals. – Fusion

Verwandte Themen