@Monitorkin

Индексация по полю _ID в MongoDB не работает в YII2?

Установлена MongoDB, Yii2 + yiisoft/yii2-mongodb

Не работает индексация массива по полю _id (MongoID) при запросе из базы MongoDB
Если сделать так то ошибок нет:
$cats = Cats::find()
                    ->select(['_id', 'name'])
                    //->indexBy('_id')
                    ->asarray()
                    ->all();

но если включить индексацию по _id:
$cats = Cats::find()
                    ->select(['_id', 'name'])                    
                    ->indexBy('_id')
                    ->asarray()
                    ->all();

то всегда ошибка:
Illegal offset type
Это косяк расширения или это я чтото не так делаю?
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 2
mitaichik
@mitaichik
Думается, что в результате выборки _id - это объект ObjectId, а в php ключем array может быть только скалярный тип.

Но это догадка, сам c Mongo в php не работал...
Ответ написан
@Monitorkin Автор вопроса
не знаю прав я или нет, пока решил так, может пригодится кому:
function IndexBy_Id($array) {
        foreach ($array as $item) {
            $array2[(string) $item['_id']] = $item;
        }
        return $array2;
    }

$array - массив с ObjectId
$item['_id'] - ObjectId
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы