MongoDB и PHP теряют _id при вставке 2 объектов - PullRequest
0 голосов
/ 06 июля 2011

Какая-то странная проблема:

У меня есть Объект со свойствами, если одно свойство хотя у объекта, у которого уже есть "_id", mongoDB не создает "_id" для первого объекта?

    // convert properties to array
    $save = $this->model->toArray();

    foreach ($save as $key => $val) {
        // value is an object, convert to array
        if ($val instanceof NcX_Mongo_Model) {
            $save[$key] = $val->toArray();
        }
    }

    // update
    if ($this->model->getId()) {
        $this->collection->save($save);
    } else {
        error_log('insert');
        // insert
        $this->collection->insert($save);
    }

больше код ..:

$event = new My_Model_Mongo_Event();
$location = new My_Model_Mongo_Location();

$event->setLocation($location);
$event->save();
// no id set

$event->setLocation($location->toArray());
$event->save();
// everything works.. and id is set to event

1 Ответ

0 голосов
/ 06 июля 2011

Понял, я понятия не имею, почему, но при этом:

// update
if ($this->model->getId()) {
    $this->collection->save($save);
} else {
    // insert
    $this->collection->insert($save);

    // if i dont do this, the model has no id when inserting 2 objects
    $this->model->setId($save['_id']);
}

Идентификатор установлен, он звучит логично, но работает без "setId", когда вставляется только простой массив.

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