【发布时间】:2017-03-03 03:36:16
【问题描述】:
我有以下代码:
// 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
...
)
如何使用company_ids 直接查询Archive 集合并消除对foreach 循环的需要?
【问题讨论】:
-
你试过 $results = Archive::where("billing.company._id", 'all', $company_ids)->get();
-
是的,我试过了,但结果是空的。
-
试试 $results = Archive::where("billing.company._id", 'all', json_decode('{"$in":'+json_decode($company_ids)+'}' )->get();
-
那也不行; phpStorm 抱怨连接运算符错误,第二个 json_decode 错误输出期望字符串,stackoverflow.com/questions/7436925/… 解决了。这就是我最终得到的结果: Archive::where("billing.company._id", 'all', json_decode('{"$in":' . json_encode($company_ids) . '}')->get( ));但它仍然会出错“调用数组上的成员函数 get()”
标签: php mongodb mongodb-query jenssegers-mongodb