Re: DB_DataObject_FormBuilder and crossLinkExtraFields
| From: | James Stewart | 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>
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 TABLEThat 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.
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.