[Dbix-class] Complex table joins
Richard Jones
ra.jones at dpw.clara.co.uk
Mon May 21 20:06:48 GMT 2007
Matt S Trout wrote:
> On Mon, May 21, 2007 at 11:39:27AM +0100, Richard Jones wrote:
>> I've got table joins working OK where base table_1 (me) contains foreign
>> keys to 3 other tables (table_2, table_3 & table_4). So the 'base' (me)
>> table_1 contains 3 'belongs_to' relationships, and tables_ 2, 3 & 4 each
>> contain a 'has_many' relationship with the base table. Then:
>>
>> my $rs = $c->model('Schema::Foo')->search( $where_href, # WHERE clause
>> {
>> select => qw( table1.id table2.field table3.something_else etc ),
>> join => [ qw/table_2 table_3 table_4/ ],
>
> The join attribute takes relationship names as defined in your classes; you
> -may- make some of these the same as the table name but that's none of DBIC's
> business.
Hi Matt, sorry but I think I originally illustrated my problem rather
badly - in my actual code I -did- use relationship names rather than
table names.
I also think the problem is that I haven't managed to find a way to
define a relationship in Schema::Foo to a table removed by 2 levels:
foo: id bar_id
|
v
bar: id baz_id
|
v
baz: id the_field_I_want
Hopefully the diagram makes sense. foo.bar_id => bar.id and bar.baz_id
=> baz.id. I want a column from baz, and probably need to define the
relationship in Schema::Foo to avoid the 'no such relationship' error.
I tried add_relationship, but that just introduced another error (as
described in my reply to Fastjack).
--
Richard Jones
More information about the Dbix-class
mailing list