/** * Find object by primary key using raw SQL to go fast. * Bypass doSelect() and the object formatter by using generated code. * * @param mixed $key Primary key to use for the query * @param PropelPDO $con A connection object * * @return Property A model object, or null if the key is not found * @throws PropelException */ protected function findPkSimple($key, $con) { $sql = 'SELECT `id`, `account_id`, `name`, `label`, `description`, `type`, `default_value`, `fixed` FROM `property` WHERE `id` = :p0'; try { $stmt = $con->prepare($sql); $stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->execute(); } catch (Exception $e) { Propel::log($e->getMessage(), Propel::LOG_ERR); throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), $e); } $obj = null; if ($row = $stmt->fetch(PDO::FETCH_NUM)) { $obj = new Property(); $obj->hydrate($row); PropertyPeer::addInstanceToPool($obj, (string) $key); } $stmt->closeCursor(); return $obj; }
<?php include dirname(__FILE__) . '/../../bootstrap/Doctrine.php'; $t = new lime_test(7, new lime_output_color()); include dirname(__FILE__) . '/../../testTools.php'; // begin testing $t->comment('Property class test'); $p = new Property(); $p->hydrate(array('keey' => 'testKey', 'value' => '{"a":1,"b":"geo"}')); $t->comment('getRawValue()'); $t->is($p->getRawValue(), $p->rawGet('value'), 'getRawValue is really raw'); $t->comment('->getValue()'); $t->is($p->getValue(), array('a' => 1, 'b' => 'geo'), 'json conversion works'); $p->hydrate(array('value' => '{"a":1,"b":"g€e\'ñ"}')); $t->is($p->getValue(), array('a' => 1, 'b' => "g€e'ñ"), 'json works with weird chars'); $p->hydrate(array('value' => '{"abcd ñep\\"ab\\"":1}')); $t->is($p->getValue(), array('abcd ñep"ab"' => 1), 'Special chars untouched'); $t->comment('->setValue()'); $arr = array('a' => 1, 'b' => 2); $p->setValue($arr); $t->is($p->getValue(), $arr, 'json conversion works fine both ways'); $t->comment('test that changing the currency_decimals property changes the view'); PropertyTable::set('currency_decimals', 2); $test_invoice->setAmounts(); $t->is($test_invoice->getGrossAmount(), 238.35, 'checking 2 decimals'); PropertyTable::set('currency_decimals', 3); $test_invoice->setAmounts(); $t->is($test_invoice->getGrossAmount(), 238.354, 'checking 3 decimals'); PropertyTable::set('currency_decimals', 2);