Yii + MongoDB + ActiveRecord. Как я могу использовать необработанные запросы в ActiveRecord? - PullRequest
0 голосов
/ 08 ноября 2018

Я новичок в MongoDB и Yii Framework, но мне нужно выбрать данные из коллекции документов, которые имеют сложную структуру (вложенные массивы данных).Мне удалось написать запрос, который делает это, но я не знаю, как вставить его в существующий код, который использует ActiveRecord и QueryTrait.Вот мой запрос (написанный с использованием синтаксиса MongoDB):

db.getCollection("product").find({"options.values":{"$elemMatch": {"$elemMatch":{"$in":['some_value']}}} })

Но существующий код использует ActiveRecord + QueryTrait для выбора документов:

    $query = new ActiveQuery('product');
    $query->select('_id', 'name');
    $query->andWhere(["_id" => $criteria["id"]]);
    ...etc

Возможно ли вставить необработанный запрос MongoDB в этот код?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Мне не удалось вставить необработанные запросы в ActiveRecord, но я нашел, как «перевести» их на язык ActiveRecord. Итак, запрос

{"options.values":{"$elemMatch": {"$elemMatch":{"$in":['some_value']}}} }

переводится так:

            $query->andWhere(
            ['options.values' =>
                ['$elemMatch' =>
                    ['$elemMatch' =>
                        ['$in' => ['value1', 'value2'], ...]
                    ]
                ]
            ]
        );
0 голосов
/ 11 ноября 2018

Я предлагаю вам использовать официальный пакет yii2 mongodb

https://github.com/yiisoft/yii2-mongodb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...