Re: DB_DataObject_FormBuilder and crossLinkExtraFields

From: Date: Sat, 23 Sep 2006 01:06:10 +0000
Subject: Re: DB_DataObject_FormBuilder and crossLinkExtraFields
References: 1 2  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-25216@lists.php.net to get a copy of this message
On Sep 22, 2006, at 7:48 PM, Justin Patrin wrote:
On 9/22/06, James Stewart <lists@jystewart.net> wrote: <snip>
That generates a form with checkboxes for each time slot, and a select list of venues for each time slot. When I add a session to a new time slot everything works fine, with an entry being created for the appropriate time slot and location, but when I try to alter a location for an already selected time slot the update isn't completed and DB_DO_FB attempts to insert a new value in the database for just the location. eg. DataObjects_Conference_session_time_slot: QUERY: INSERT INTO conference_session_time_slot (location ) VALUES ( 6 ) where 6 is the value of the location I want to change to, but I expect something like: UPDATE conference_session_time_slot SET location = 6 WHERE id = X Looking through the code I can't see where DB_DO_FB actually works out which updates it's supposed to make for extra fields, so I'm not sure where to go next. Anyone got any ideas?
Almost certainly you didn't set up your primary key on the conference_session_time_slot correctly.
It's definitely declared as a primary key in the schema and the DO seems to have picked it up. Is there somewhere else I should be declaring it? The table definition is (I'm using MySQL): ------ CREATE TABLE conference_session_time_slot ( id int(11) NOT NULL auto_increment, session_id int(11) default NULL, time_slot int(11) NOT NULL default '0', location int(11) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM; ------ The do's .ini file holds: ------ [conference_session_time_slot] id = 129 session_id = 129 time_slot = 129 location = 1 ------ and the first few lines of the DO class are: ------ class DataObjects_Conference_session_time_slot extends DB_DataObject {
    ###START_AUTOCODE
    /* the code below is auto generated do not remove the above tag */
    var $__table = 'conference_session_time_slot';    // table name
    var $id;                              // int(11)  not_null primary_key auto_increment
    var $session_id;                      // int(11)  not_null
    var $time_slot;                       // int(11)  not_null
    var $location;                        // int(11)
------ thanks. James.

« previous php.pear.general (#25216) next »