2016-04-05 5 views
2

Ich versuche, eine Sammlung von Objekten zu filtern, indem ich das Verfallsdatum mit dem heutigen Datum abgleiche, aber ich kann es nicht richtig zum Laufen bringen. Kann jemand den Code ansehen? Ich bin mir sicher, dass ich hier etwas verpasse. Ich habe überall gesucht und viele Beispiele gefunden, aber keine funktionieren.Eine Laravel-Sammlung in einer Ansicht filtern, indem Daten verglichen werden?

Dies entspricht ganz gut, aber mit einer Liste von 9 Objekten, von denen 3 ein Ablaufdatum haben, das auf 2012 eingestellt ist, gibt es keine Ergebnisse aus der Sammlung zurück.

-Controller

public function classifieds() 
{ 
    $myclassifieds = Auth::user()->classifieds; 
    return view('account.classifieds')->with(['allclassifieds'=>$myclassifieds]); 
} 

Ansicht

@if(count($allclassifieds->where('expired_on','<', Carbon\Carbon::now())) > 0) 
//Something here 
@endif 
+0

gut aussieht, ohne schwer zu sagen, die Sammlung selbst zu sehen. Sind Sie sicher, dass "expired_on" direkt auf der ersten Ebene jedes Sammlungsobjekts verfügbar ist? Auch 'where()' Vergleich ist streng. Könnte sein, dass 'expired_on' ein Datum ist, während Carbon :: now() dir datetime gibt - und das könnte Probleme verursachen, nicht sicher. – lesssugar

+0

Dies ist die Sammlung mit einem Objekt darin. Expires_on ist ein Datum-Zeit-Objekt, das sehr seltsam ist. [ { "id": 31, "username": "Test" "type": 1, "action": "verkaufen", "maincat": "Antiquitäten" "title": "test", "description": "test", "extratextfield": null, "lowerprice": 1, "partex": 0, "Bedingung": "verwendet", "Preis": "680 ", " Bilder ":" 1 ", " E-Mail ":" [email protected] ", " Kommentare ": 1, " created_at ":" 2016-04-03 19:00:26 ", "updated_at": "2016-04-03 19:00:26", "expires_on ":" 2016-03-14 19:00:26 " } ] – matpulis

+0

In Ihrem Code haben Sie' expired_on'. Ist es ein Tippfehler beim Einfügen in den Post oder ein Tippfehler im ursprünglichen Code? ;) Das Objekt enthält 'expires_on' in ihm. – lesssugar

Antwort

1

Zugang der Wert expired_on direkt

@foreach($allclassifieds as $classified) 
    @if($classified->expired_on > Carbon\Carbon::now()) 
     // show classified 
    @endif 
@endforeach 

können Sie die expired_on Eigenschaft machen ein Ca rbon Instanz standardmäßig, indem sie es auf die $dates Array in Ihrem Modell hinzu:

protected $dates = ['created_at', 'updated_at', 'expired_on']; 

jetzt expired_on gibt immer eine Carbon-Instanz

+0

Das funktioniert tatsächlich, aber ich habe Carbon :: parse() die $ classified-> expired_on erfolgreich vergleichen. Nicht genau, was ich suche, aber seine machbare Weise – matpulis

+0

@matpulis aktualisierte Antwort. Könnten Sie näher erläutern, wonach Sie suchen? –

+0

Ich möchte herausfinden, wie viele Objekte in den Sammlungen ein expires_on-Datum haben, das kleiner ist als heute. ohne tatsächlich eine for-Schleife zu machen. Obwohl Ihre Methode funktioniert. Danke dir – matpulis