Changeset 628
- Timestamp:
- 10/31/07 22:47:15 (1 year ago)
- Files:
-
- trunk/lib/jelix-modules/junittests/classes/junittestcasedb.class.php (modified) (1 diff)
- trunk/lib/jelix-modules/junittests/classes/junittestcasedb.class.php (modified) (1 diff)
- trunk/lib/jelix/dao/jDaoGenerator.class.php (modified) (3 diffs)
- trunk/lib/jelix/dao/jDaoGenerator.class.php (modified) (3 diffs)
- trunk/testapp/modules/jelix_tests/daos/products.dao.xml (modified) (1 diff)
- trunk/testapp/modules/jelix_tests/daos/products.dao.xml (modified) (1 diff)
- trunk/testapp/modules/jelix_tests/tests/jdao.main_api.html.php (modified) (3 diffs)
- trunk/testapp/modules/jelix_tests/tests/jdao.main_api.html.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/jelix-modules/junittests/classes/junittestcasedb.class.php
r462 r628 125 125 $ok=false; 126 126 foreach($results as $k=>$res){ 127 if($res == $rec){ 127 $sameValues = true; 128 foreach($rec as $name=>$value){ 129 if($res[$name] != $value) { 130 $sameValues = false; 131 break; 132 } 133 } 134 135 if($sameValues){ 128 136 unset($results[$k]); 129 137 $ok = true; trunk/lib/jelix-modules/junittests/classes/junittestcasedb.class.php
r462 r628 125 125 $ok=false; 126 126 foreach($results as $k=>$res){ 127 if($res == $rec){ 127 $sameValues = true; 128 foreach($rec as $name=>$value){ 129 if($res[$name] != $value) { 130 $sameValues = false; 131 break; 132 } 133 } 134 135 if($sameValues){ 128 136 unset($results[$k]); 129 137 $ok = true; trunk/lib/jelix/dao/jDaoGenerator.class.php
r622 r628 174 174 175 175 if($pkai !== null){ 176 $src[] = ' if($result){'; 177 $src[] = ' if($record->'.$pkai->name.' < 1 ) '; 176 $src[] = ' if(!$result)'; 177 $src[] = ' return false;'; 178 179 $src[] = ' if($record->'.$pkai->name.' < 1 ) '; 178 180 $src[] = $this->genUpdateAutoIncrementPK($pkai, $pTableRealName); 179 $src[] = ' return $result;'; 180 $src[] = ' }else return false;'; 181 }else{ 182 $src[] = ' return $result;'; 183 } 181 } 182 183 // we generate a SELECT query to update field on the record object, which are autoincrement or calculated 184 $fields = $this->_getPropertiesBy('FieldToUpdate'); 185 if (count($fields)) { 186 $result = array(); 187 foreach ($fields as $id=>$prop){ 188 $result[]= $this->genSelectPattern($prop->selectPattern, '', $prop->fieldName, $prop->name); 189 } 190 191 $sql = 'SELECT '.(implode (', ',$result)). ' FROM '.$pTableRealNameEsc.' WHERE '; 192 $sql.= $this->_buildSimpleConditions($pkFields, 'record->', false); 193 194 $src[] = ' $query =\''.$sql.'\';'; 195 $src[] = ' $rs = $this->_conn->query ($query);'; 196 $src[] = ' $newrecord = $rs->fetch ();'; 197 foreach ($fields as $id=>$prop){ 198 $src[] = ' $record->'.$prop->name.' = $newrecord->'.$prop->name.';'; 199 } 200 } 201 $src[] = ' return $result;'; 184 202 $src[] = '}'; 185 186 187 203 188 204 //----- update method … … 503 519 return ($field->table == $this->_datasParser->getPrimaryTable()); 504 520 } 521 505 522 protected function _captureAll(&$field){ 506 523 return true; 507 524 } 525 526 protected function _captureFieldToUpdate(&$field){ 527 return ($field->table == $this->_datasParser->getPrimaryTable() 528 && !$field->isPK 529 && !$field->isFK 530 && ( $field->datatype == 'autoincrement' || $field->datatype == 'bigautoincrement' 531 || ($field->insertPattern != '%s' && $field->selectPattern != ''))); 532 } 533 508 534 509 535 … … 813 839 814 840 protected function genUpdateAutoIncrementPK($pkai, $pTableRealName) { 815 return ' if($record->'.$pkai->name.' < 1 )$record->'.$pkai->name.'= $this->_conn->lastInsertId();';841 return ' $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 816 842 } 817 843 trunk/lib/jelix/dao/jDaoGenerator.class.php
r622 r628 174 174 175 175 if($pkai !== null){ 176 $src[] = ' if($result){'; 177 $src[] = ' if($record->'.$pkai->name.' < 1 ) '; 176 $src[] = ' if(!$result)'; 177 $src[] = ' return false;'; 178 179 $src[] = ' if($record->'.$pkai->name.' < 1 ) '; 178 180 $src[] = $this->genUpdateAutoIncrementPK($pkai, $pTableRealName); 179 $src[] = ' return $result;'; 180 $src[] = ' }else return false;'; 181 }else{ 182 $src[] = ' return $result;'; 183 } 181 } 182 183 // we generate a SELECT query to update field on the record object, which are autoincrement or calculated 184 $fields = $this->_getPropertiesBy('FieldToUpdate'); 185 if (count($fields)) { 186 $result = array(); 187 foreach ($fields as $id=>$prop){ 188 $result[]= $this->genSelectPattern($prop->selectPattern, '', $prop->fieldName, $prop->name); 189 } 190 191 $sql = 'SELECT '.(implode (', ',$result)). ' FROM '.$pTableRealNameEsc.' WHERE '; 192 $sql.= $this->_buildSimpleConditions($pkFields, 'record->', false); 193 194 $src[] = ' $query =\''.$sql.'\';'; 195 $src[] = ' $rs = $this->_conn->query ($query);'; 196 $src[] = ' $newrecord = $rs->fetch ();'; 197 foreach ($fields as $id=>$prop){ 198 $src[] = ' $record->'.$prop->name.' = $newrecord->'.$prop->name.';'; 199 } 200 } 201 $src[] = ' return $result;'; 184 202 $src[] = '}'; 185 186 187 203 188 204 //----- update method … … 503 519 return ($field->table == $this->_datasParser->getPrimaryTable()); 504 520 } 521 505 522 protected function _captureAll(&$field){ 506 523 return true; 507 524 } 525 526 protected function _captureFieldToUpdate(&$field){ 527 return ($field->table == $this->_datasParser->getPrimaryTable() 528 && !$field->isPK 529 && !$field->isFK 530 && ( $field->datatype == 'autoincrement' || $field->datatype == 'bigautoincrement' 531 || ($field->insertPattern != '%s' && $field->selectPattern != ''))); 532 } 533 508 534 509 535 … … 813 839 814 840 protected function genUpdateAutoIncrementPK($pkai, $pTableRealName) { 815 return ' if($record->'.$pkai->name.' < 1 )$record->'.$pkai->name.'= $this->_conn->lastInsertId();';841 return ' $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 816 842 } 817 843 trunk/testapp/modules/jelix_tests/daos/products.dao.xml
r576 r628 8 8 <property name="name" fieldname="name" datatype="string" required="true"/> 9 9 <property name="price" fieldname="price" datatype="float"/> 10 <property name="create_date" fieldname="create_date" datatype="datetime" insertpattern="NOW()"/> 10 11 </record> 11 12 </dao> trunk/testapp/modules/jelix_tests/daos/products.dao.xml
r576 r628 8 8 <property name="name" fieldname="name" datatype="string" required="true"/> 9 9 <property name="price" fieldname="price" datatype="float"/> 10 <property name="create_date" fieldname="create_date" datatype="datetime" insertpattern="NOW()"/> 10 11 </record> 11 12 </dao> trunk/testapp/modules/jelix_tests/tests/jdao.main_api.html.php
r483 r628 82 82 $this->assertEqual($res, 1, 'jDaoBase::insert does not return 1'); 83 83 $this->assertNotEqual($this->prod1->id, '', 'jDaoBase::insert : id not set'); 84 $this->assertNotEqual($this->prod1->create_date, '', 'jDaoBase::insert : create_date not updated'); 84 85 85 86 $this->prod2 = jDao::createRecord ('products'); … … 90 91 $this->assertEqual($res, 1, 'jDaoBase::insert does not return 1'); 91 92 $this->assertNotEqual($this->prod2->id, '', 'jDaoBase::insert : id not set'); 93 $this->assertNotEqual($this->prod2->create_date, '', 'jDaoBase::insert : create_date not updated'); 92 94 93 95 $this->prod3 = jDao::createRecord ('products'); … … 98 100 $this->assertEqual($res, 1, 'jDaoBase::insert does not return 1'); 99 101 $this->assertNotEqual($this->prod3->id, '', 'jDaoBase::insert : id not set'); 100 102 $this->assertNotEqual($this->prod3->create_date, '', 'jDaoBase::insert : create_date not updated'); 101 103 102 104 $this->records = array( trunk/testapp/modules/jelix_tests/tests/jdao.main_api.html.php
r483 r628 82 82 $this->assertEqual($res, 1, 'jDaoBase::insert does not return 1'); 83 83 $this->assertNotEqual($this->prod1->id, '', 'jDaoBase::insert : id not set'); 84 $this->assertNotEqual($this->prod1->create_date, '', 'jDaoBase::insert : create_date not updated'); 84 85 85 86 $this->prod2 = jDao::createRecord ('products'); … … 90 91 $this->assertEqual($res, 1, 'jDaoBase::insert does not return 1'); 91 92 $this->assertNotEqual($this->prod2->id, '', 'jDaoBase::insert : id not set'); 93 $this->assertNotEqual($this->prod2->create_date, '', 'jDaoBase::insert : create_date not updated'); 92 94 93 95 $this->prod3 = jDao::createRecord ('products'); … … 98 100 $this->assertEqual($res, 1, 'jDaoBase::insert does not return 1'); 99 101 $this->assertNotEqual($this->prod3->id, '', 'jDaoBase::insert : id not set'); 100 102 $this->assertNotEqual($this->prod3->create_date, '', 'jDaoBase::insert : create_date not updated'); 101 103 102 104 $this->records = array(
