Запрос коллекции с массивом 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'),
]
Другие вопросы по тегам