[prev] [thread] [next] [Date index for 2004/08/14]
Sorry, ignore this message. I didn't follow the examples correctly, I missed this part: Store::LineItem->columns(qw( id order_id product_id qty price color size custom_opts )); needs to be: > Store::LineItem->columns(All => qw( > id order_id product_id qty price color size custom_opts > )); Thanks for your patience, Brian On Sat, 14 Aug 2004 02:07:36 +0100 (BST), <brian@xxxxxxxx.xxx> wrote: > I'm following the documentation on CPAN and I'm having problems getting > a simple one-to-many relationship figured out. Basically, every time I > insert into the parent table, then insert into the child table, it's > giving me the error: > > Can't insert new Store::LineItem: DBD::mysql::st execute failed: Column > 'order_id' cannot be null [for statement ``INSERT INTO > sf_order_line_items (color, product_id, order_id, price, qty, size) > VALUES (?, ?, ?, ?, ?, ?) > '']) > > None of the documentation (that I have found) specifies (when inserting > a child)how to tell the class what value to use for the foriegn key. So > I'm not passing an order_id, even though it's required (shouldn't it > deduce that from the fact that I'm calling it from the parent class?). > No matter what I specify for the order_id, I still get the same error. > I've tried 'NULL', undef, any integer, anything, I always get that error. > > I'm assuming I set up the relationship wrong somehow, so here is my code > in hopes that you can give a bit of help. > > <code> > #============================================================================== > package Store::LineItem; > use base 'Store::DBI'; > > Store::LineItem->table('sf_order_line_items'); > > Store::LineItem->columns(qw( > id order_id product_id qty price color size custom_opts > )); > > Store::LineItem->has_a(order_id => 'Store::Order'); > > #============================================================================== > package Store::Order; > use base 'Store::DBI'; > > # This is here to emulate the default placed_on = NOW() > __PACKAGE__->add_trigger(before_create => sub { > my $class = shift; > return unless $class->find_column('placed_on'); > $class->placed_on($class->get_current_time()); > }); > > Store::Order->table('sf_orders'); > > Store::Order->columns(qw( > id transaction_id auth_msg successful card_number exp_date amount > billto_fname billto_lname billto_address billto_city billto_state > billto_zip billto_country billto_phone shipto_fname shipto_lname > shipto_address shipto_city shipto_state shipto_zip shipto_country > shipto_phone placed_on shipped_on backordered_on canceled_on company_id > customer_id cart_id shipping_method shipping_cost tax tracking_no > shipped_by deleted gift gift_message affiliate_id affiliate_paid > shipto_company giftcert_id credit_used printed promo_id promo_amount cv2 > authorizedotnet_code authorizedotnet_captured authorizedotnet_txid > remote_addr > )); > > Store::Order->has_many(line_items => 'Store::LineItem'); > </code> > > And then in the main perl script I have: > <code> > use TestOrder; > > my $o = Store::Order->create({ > cart_id => '898996', > transaction_id => '823498723498', > successful => 1, > card_number => '1234123412341234', > exp_date => 1104, > amount => 50.99, > billto_fname => 'Brian', > billto_lname => 'Lozier', > billto_address => '123 Happy Street', > billto_city => 'Belfair', > billto_state => 'WA', > billto_zip => '98528', > billto_country => 'USA', > billto_phone => '1231231234', > company_id => 1198, > customer_id => 125998, > shipping_method => 'Standard', > shipping_cost => 5.00, > tax => 0.00, > deleted => 0, > gift => 0, > cv2 => 123, > authorizedotnet_captured => 0 > }); > > my $l = $o->add_to_line_items({ > order_id => 5, # No matter what I set this to, I get the error - even > if I remove it completely! > product_id => 73856, > qty => 1, > price => 45.99, > color => 'green', > size => 'ML' > }); > </code> > Any help would be greatly appreciated. > >
Having Problems Creating Simple Relationship
|
Re: Having Problems Creating Simple Relationship
|
Generated at 11:34 on 01 Dec 2004 by mariachi v0.52