/** * Gets the fields => values to write to the table. * * @since 1.20 * * @param IORMRow $row * * @return array */ protected function getWriteValues(IORMRow $row) { $values = array(); $rowFields = $row->getFields(); foreach ($this->getFields() as $name => $type) { if (array_key_exists($name, $rowFields)) { $value = $rowFields[$name]; switch ($type) { case 'array': $value = (array) $value; // fall-through! // fall-through! case 'blob': $value = serialize($value); // fall-through! } $values[$this->getPrefixedField($name)] = $value; } } return $values; }
/** * @dataProvider instanceProvider */ public function testSetFields(IORMRow $item) { $originalValues = $item->getFields(); $item->setFields(array(), false); foreach ($item->getTable()->getFields() as $name => $type) { $originalHas = array_key_exists($name, $originalValues); $newHas = $item->hasField($name); $this->assertEquals($originalHas, $newHas); if ($originalHas && $newHas) { $this->assertEquals($originalValues[$name], $item->getField($name)); } } $mockFields = $this->getMockFields(); $item->setFields($mockFields, false); $this->assertFieldValues($originalValues, $item); $item->setFields($mockFields, true); $this->assertFieldValues($mockFields, $item); }