[Dbix-class] BUG? Unable to resolve relationship

Ovid publiustemp-dbic at yahoo.com
Fri Dec 11 19:47:48 GMT 2009


Does this make a difference?  The docs explicitly have a lower-case left. 

In any event, I tried the upper case version and it still fails.

I might add, though I think some folks may have missed this, my initial email had a complete test case which you can cut-n-paste and run! (Assuming you have DBIx::Class::Schema::Loader and DBD::SQLite, that is :)  I mention this because I'm hearing suggestions, but I went out of my way to make a runnable snippet for folks and no one is trying it :(

Cheers,
Ovid
--
Buy the book         - http://www.oreilly.com/catalog/perlhks/
Tech blog            - http://use.perl.org/~Ovid/journal/
Twitter              - http://twitter.com/OvidPerl
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6



----- Original Message ----
> From: Scott Pham (scpham) <scpham at cisco.com>
> To: publiustemp-dbic at yahoo.com; DBIx::Class user and developer list <dbix-class at lists.scsys.co.uk>; Rob Kinyon <rob.kinyon at gmail.com>
> Sent: Fri, 11 December, 2009 19:25:09
> Subject: RE: [Dbix-class] BUG? Unable to resolve relationship
> 
> It looks like you are using 'left' not 'LEFT' in all caps?
> 
> -----Original Message-----
> From: Ovid [mailto:publiustemp-dbic at yahoo.com] 
> Sent: Friday, December 11, 2009 10:53 AM
> To: Rob Kinyon
> Cc: DBIx::Class user and developer list
> Subject: Re: [Dbix-class] BUG? Unable to resolve relationship
> 
> (Apologies if this is sent twice)
> 
> --- On Fri, 11/12/09, Rob Kinyon wrote:
> 
> > From: Rob Kinyon 
> > 
> > Did you add the join_type => LEFT as I suggested?
> 
> Yes.
> 
> Trying to figure out the syntax.  I *think* this is the correct syntax:
> 
>   The::Schema::Customer->belongs_to(
>     "account", "The::Schema::Account",
>     { "foreign.id" => "self.account_id" },
>     { join_type => 'left' },
>   ); 
>   # The::Schema::Customer::account(): Unable to resolve relationship
>   # from Customer to account: column account.left not loaded from 
>   # storage (or not passed to new() prior to insert()). Maybe you 
>   # forgot to call ->discard_changes to get defaults from the db. at 
>   # loader.pl line 38
> 
> So I tried this:
> 
>   The::Schema::Customer->belongs_to(
>     "account", "The::Schema::Account",
>     { join_type => 'left' },
>     { "foreign.id" => "self.account_id" }
>   ); 
>   # The::Schema::Customer::account(): Unable to resolve relationship
>   # from Customer to account: column account.left not loaded from 
>   # storage (or not passed to new() prior to insert()).. Maybe you 
>   # forgot to call ->discard_changes to get defaults from the db. at 
>   # loader.pl line 38
> 
> And flailing:
> 
>   The::Schema::Customer->belongs_to(
>     "account", 
>     "The::Schema::Account",
>     {   join_type    => 'left',
>         "foreign.id" => "self.account_id"
>     },
>   );
>   # The::Schema::Customer::account(): Invalid rel cond key join_type
>   # at loader.pl line 38
> 
> I can't tell from the docs which I want, but this (from 
> DBIx::Class::Relationship) suggest that my first try might have been correct:
> 
>   # in a Book class (where Author has_many Books)
>   __PACKAGE__->belongs_to(
>     author => 
>     'My::DBIC::Schema::Author',
>     'author', 
>     { join_type => 'left' }
>   );
> 
> Also, you stated that "might_have is the LEFT JOIN version of has_many."  The 
> docs say "one-to-one".  Which is correct?  Should I change my code from 
> might_have to belongs_to? (As I have above)
> 
> Cheers,
> Ovid
> --
> Buy the book         - http://www.oreilly.com/catalog/perlhks/ 
> Tech blog            - http://use.perl.org/~Ovid/journal/ 
> Twitter              - http://twitter.com/OvidPerl 
> Official Perl 6 Wiki - http://www.perlfoundation.org/perl6 
> 
> 
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class 
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ 
> Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk 





More information about the DBIx-Class mailing list