2016-07-20 6 views
1

Als Folgefrage in meinem letzten post kann ich einfach nicht herausfinden, wie WHERE-Klausel zu verwenden, wenn Sie eine verschachtelte json Daten haben. Bitte beachten Sie meine letzte post als Referenz.WHERE-Klausel in verschachtelten JSON-Daten Laravel 5

So habe ich diese Art von Daten, die durch Beziehung in meinem Modellen:

[ 
    { 
    "id":1, 
    "name":"South Luzon", 
    "branches":[ 
     { 
      "id":1, 
      "machinenum":108, 
      "name":"Alaminos", 
      "region_id":1, 
      "user":{ 
       "id":52, 
       "name":"", 
       "email":"[email protected]", 
       "role":0, 
       "machinenum":108, 
       "created_at":"2016-07-11 05:58:04", 
       "updated_at":"2016-07-14 09:49:00", 
       "pendings":[ 
       { 
        "id":10, 
        "user_id":52, 
        "region":"South Luzon", 
        "branch":"Alaminos", 
        "docdate":"2016-07-14 00:00:00", 
        "ls_or":12345, 
        "por":1, 
        "ls_ci":12345, 
        "ci":2, 
        "ls_ch":12345, 
        "ch":2, 
        "dep":5, 
        "cla":0, 
        "grpo":3, 
        "si":25, 
        "so":62, 
        "sts":2, 
        "disb":3, 
        "arcm":5, 
        "apcm":65, 
        "pint":2, 
        "rc_cash":1, 
        "reason":"Test Reason Alaminos", 
        "created_at":"2016-07-14 09:48:55", 
        "updated_at":"2016-07-14 09:48:55" 
       } 
       ] 
      } 
     } 

Was ich versuche zu tun ist Schleife regions mit branches und die pending jeder Filialen erhalten. Ich bin erfolgreich die Schleife mit meinem letzten SO question gemacht. Jetzt möchte ich nur das Datum filtern, wenn die pending erstellt wurde.

Ich versuche, dies zu tun:

$regions = Region::with(array('branches->user->pendings' => function($query) { 
    $query->where('created_at', '=', '2016-07-14 09:48:55'); 
}))->get(); 

Aber ich bin immer diese Fehlermeldung:

BadMethodCallException in Builder.php line 2345: 
Call to undefined method Illuminate\Database\Query\Builder::branches->user->pendings() 

Ich habe auch einige der Forschung getan, aber hier fragen am Ende. Vielen Dank im Voraus und bitte vergessen Sie nicht, meine letzte SO question als Ihre Referenz zu sehen.

Antwort

0

Dieser Code scheint zu funktionieren:

$regions = Region::with(['branches.user.pendings' => function($query){ 
    $query->where('created_at', 'like', '%2016-07-12%'); 
}])->get(); 

Bitte bestätigen Sie, ob es eine bewährte Methode, oder es gibt einen besseren Weg, es zu tun.

0
$regions = App\Region::with(['pendings' => function ($query) { 
    $query->where('created_at', '=', '2016-07-14 09:48:55'); 

}])->get(); 
+0

Bekam den gleichen Fehler –

0

Können Sie dies auf die Beziehungen zuerst tun, bevor Sie es in JSON ausgeben? Sie können diese Abfrage dort erstellen, so dass die Json-Ausgabe sauber ist. Dein vorheriger Beitrag hat eine Antwort, die dich zur Lösung führen kann.

+0

Das Datum in meiner Frage ist nur ein Beispiel. Offensichtlich wäre das Datum in einer Variablen wie $ filter_date = '2016-07-14''. Und wahrscheinlich wurden diese Daten nur in der "Ansicht" mit den '' oder'