@LakeForest

InvalidOperationException, пока на прямую items в документе не удалю — ничего не добавляется. Как добавить item в массив Sokil\MongoDB?

Ошибка, пока на прямую items в документе не удалю - ничего не добавляется.
Fatal error: Uncaught Sokil\Mongo\Document\InvalidOperationException: The field "items" must be an array but is of type Object in /usr/src/consumer/vendor/sokil/php-mongo/src/Document.php:948
consumer_1 | Stack trace:
consumer_1 | #0 /usr/src/consumer/src/CUDReceiver.php(118): Sokil\Mongo\Document->push('items', Object(brokers\models\StructItem))

Создается документ в mongodb. И пока в ручную " items: []" не удаляю - пишет ошибку и не добавляет элемент.. Или наоборот не добавлю. В общем вообще не понимаю, в чем причина?
{
    _id: 2,
    name: 'coffe',
    items: []
}

Сам код:
$newItem = new StructItem([
                            'id' => $data['id'],
                            'name' => $data['name'],
                            'price' => $data['price'],
                            'img_link' => $data['img_link']
                        ]);
                        $documentCategory = $collection->find()->where('_id', $data['category_id']['id'])->findOne();
                        $isExist = false;
                        try {
                            $items = $documentCategory->getItems();
                            if (count($items) > 0)
                                foreach ($items as $existItem) {
                                    if ($existItem['id'] === $data['id']) {
                                        $isExist = true;
                                        break;
                                    }
                                }
                        } catch (\Throwable $exception) {
                            echo $exception->getMessage() . " - Нет элементов \n";
                        }
                        if ($isExist) {
                            echo '[x] Exists #' . "\n";
                            break;
                        }
                        $documentCategory->push('items', $newItem);
                        $res = $documentCategory->save();
  • Вопрос задан
  • 24 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы