2016-07-20 24 views
1

最後のpostのフォローアップの質問として、jsonデータがネストされている場合はWHERE句の使用方法を理解できません。私の最後のpostを参考にしてください。WHERE句の入れ子になったjsonデータLaravel 5

だから、私は私のモデルで関係を利用して生成されたデータのこの種を持っている:私は何をしようとしている

[ 
    { 
    "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" 
       } 
       ] 
      } 
     } 

branchesでループすべてregionsであり、各支店のpendingを取得します。私は正常に私の最後のSO questionとループを完了しています。さて、私は、pendingが作成された日付をフィルタリングしたいだけです。

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

しかし、私はこのエラーを取得しています:

は、私はこれをやろうとしている

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

私はまた、いくつかの研究を行ったが、ここで求め終わるました。ありがとうございます。私の最後のSO questionを参照することを忘れないでください。

答えて

0

このコードが動作しているようです:

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

それがベストプラクティスであるか、またはそれを行うには良い方法がありますかどうかを確認してください。

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

}])->get(); 
+0

同じエラーが発生しました –

0

あなたはjsonで出力する前に関係でこれを最初に行いますか? jsonの出力がきれいになるように、このクエリをビルドすることができます。あなたの以前の投稿には、解決策につながる回答があります。

+0

私の質問の日付は単なる例です。明らかに、日付は '$ filter_date = '2016-07-14'のような変数になります。そしておそらく、そのデータは ''や '