/** * {@inheritdoc} */ protected function doUpdateModel($model) { $values = \Makasim\Values\get_values($model); if (isset($values['_id'])) { $values['_id'] = (string) $values['_id']; } $values = json_decode(json_encode($values), true); if (isset($values['_id'])) { $valuesToSave = $values; unset($valuesToSave['_id']); $this->collection->update(['_id' => new \MongoId($values['_id'])], $valuesToSave); } else { $this->collection->insert($values); } if (isset($values['_id'])) { $values['_id'] = (string) $values['_id']; } \Makasim\Values\set_values($model, $values); }
public function testShouldAllowAddValueToAlreadyArray() { $values = ['aNamespace' => ['aKey' => ['aVal']]]; $obj = new ValueTest(); \Makasim\Values\set_values($obj, $values); $obj->addValue('aNamespace', 'aKey', 'aVal'); $this->assertSame(['aVal', 'aVal'], $obj->getValue('aNamespace', 'aKey')); $this->assertSame(['aNamespace' => ['aKey' => ['aVal', 'aVal']]], \Makasim\Values\get_values($obj)); $this->assertSame(['aNamespace' => ['aKey' => ['aVal', 'aVal']]], \Makasim\Values\get_changed_values($obj)); }
public function testShouldAllowAddSelfObjectsAndGetPreviouslySet() { $subObjFoo = new SubObjectTest(); $subObjFoo->setValue('aSubName', 'aSubKey', 'aFooVal'); $subObjBar = new SubObjectTest(); $subObjBar->setValue('aSubName', 'aSubKey', 'aBarVal'); $obj = new ObjectTest(); $obj->addSelfObject('aKey', $subObjFoo); $obj->addSelfObject('aKey', $subObjBar); $this->assertSame([$subObjFoo, $subObjBar], $obj->getSelfObjects('aKey', SubObjectTest::class)); $this->assertSame(['self' => ['aKey' => [['aSubName' => ['aSubKey' => 'aFooVal']], ['aSubName' => ['aSubKey' => 'aBarVal']]]]], \Makasim\Values\get_values($obj)); $this->assertSame(['aSubName' => ['aSubKey' => 'aFooVal']], \Makasim\Values\get_values($subObjFoo)); $this->assertSame(['aSubName' => ['aSubKey' => 'aBarVal']], \Makasim\Values\get_values($subObjBar)); }