2016-07-20 4 views
1

В следующем вопросе в моих последних post я просто не могу понять, как использовать предложение WHERE, когда у вас есть вложенные данные json. Пожалуйста, см. Мой последний 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" 
       } 
       ] 
      } 
     } 

То, что я пытаюсь сделать, это петля всех regions с branches и получить 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''. И, вероятно, эти данные были получены только в 'view', используя теги' 'или'