activerecord - Subsonic 3.0.0.4 active record templates for mysql not returning last inserted id -


steps reproduce error:

create table person ( person_id int(11) not null auto_increment, firstname varchar(20) default null, lastname varchar(20) default null, age int(11) default '0', primary key (person_id) ) engine=innodb auto_increment=36 default charset=latin1

insert person(firstname,lastname,age) values ('myname',null,null) ;select last_insert_id() newid

    person personobject = new person();     personobject.firstname= "myname";     personobject.add();     response.write(personobject.personid); 

output is"0'

this not bug rather error happen if change naming convention of columns , tables -> topascalcase. default column/table name copied way defined on mysql database. makes ugly

original

person personobject = new person() personobject .person_id = 1; personobject .first_name = "hello"; personobject .save(); 

what happen

person personobject = new person() personobject.personid = 1; personobject.firstname = "hello"; personobject.save(); 

there two(~3, can't remember now) major issues subsonic core after changing default template generate following names using subsonic's inflector class.

reflection properties required updates/inserts must changed example:

//from item.gettype().getproperty(tbl.primarykey.name); //to item.gettype().getproperty(inflector.topascalcase(tbl.primarykey.name)); 

column names should returned original property when doing inserts example:

//from getcolumn(key) //to getcolumn(inflector.addunderscores(key)) 

Comments

Popular posts from this blog

Add email recipient to all new Trac tickets -

400 Bad Request on Apache/PHP AddHandler wrapper -

php - Change action and image src url's with jQuery -