В качестве последнего вопроса в моем последнем сообщении я просто не могу понять, как использовать WHERE
, когда у вас есть вложенные данные json
. См. Мой последний пост в качестве ссылки на это.
Итак, у меня есть такие данные, созданные с помощью отношений в моих моделях:
[ { "id":1, "name":"South Luzon", "branches":[ { "id":1, "machinenum":108, "name":"Alaminos", "region_id":1, "user":{ "id":52, "name":"", "email":"baic@alaminosbranch.addessacorp", "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 . Теперь я просто хочу отфильтровать дату создания 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 в качестве ссылки.
$regions = App\Region::with(['pendings' => function ($query) { $query->where('created_at', '=', '2016-07-14 09:48:55'); }])->get();
Не можете ли вы сделать это в отношениях прежде, чем вы выведете его в json? Вы можете построить этот запрос там, чтобы выход json был чистым. У вашего предыдущего сообщения есть ответ, который может привести вас к решению.
Этот код, похоже, работает:
$regions = Region::with(['branches.user.pendings' => function($query){ $query->where('created_at', 'like', '%2016-07-12%'); }])->get();
Пожалуйста, подтвердите, является ли это лучшей практикой или есть лучший способ сделать это.