Запрос коллекции с массивом mongoID
У меня есть следующий код:
// company_ids is an array of mongo IDs
// company_id is an array (with only 1 element) of mongo ID
foreach($company_ids as $company_id){
$results = Archive::where("billing.company._id", 'all', array($company_id))->get();
...
Вот вывод Log::info(print_r($company_ids, true))
[2016-10-22 02:41:27] production.INFO: Array
(
[0] => 57515764b91a8c4d008b45d1
[1] => 57515764b91a8c4d008b45d6
[2] => 57515764b91a8c4d008b45db
[3] => 57515764b91a8c4d008b45e0
...
)
Как я могу запросить Archive
сбор непосредственно с помощью company_ids
и устранение необходимости в foreach
цикл?
2 ответа
Решение
Небольшое обновление в ответе @Robbie. Не нужно использовать массив MongoIds
просто используйте массив строк, и это будет работать. Пользуюсь только с laravel-jenessengers
$company_ids = [
'57515764b91a8c4d008b45d1',
'57515764b91a8c4d008b45d6',
'57515764b91a8c4d008b45db',
'57515764b91a8c4d008b45e0'
]
$results = Archive::whereIn('billing.company._id', $company_ids)->get();
В соответствии с readme для библиотеки:
$results = Archive::whereIn('billing.company._id', $company_ids)->get();
(Мне не ясно, что такое массив $ company_ids, но я предполагаю, что он должен быть и массив MongoID: но это также зависит от используемой вами базовой библиотеки, Mongo или MongoDB, поскольку обе библиотеки поддерживаются библиотекой)
$company_ids = [
new mongoID('57515764b91a8c4d008b45d1'),
new mongoID('57515764b91a8c4d008b45d6'),
new mongoID('57515764b91a8c4d008b45db'),
new mongoID('57515764b91a8c4d008b45e0'),
]