+ # Set up the class
+ @{$via."::ISA"} = @{$tag_class."::ISA"};
+ $via->table($via_table);
+ $via->columns(TEMP => qw/count/);
+ $via->columns(Essential => "id", $tag_table_name, $target_table);
+ # Set up the auxilliary methods
+ $via->set_sql(summary => qq/
+ SELECT id, $tag_table_name, count(*) AS count
+ FROM $via_table
+ GROUP BY $tag_table_name
+ ORDER BY count DESC
+ LIMIT 50
+ /);
+ $via->set_sql(all => qq/
+ SELECT id, $tag_table_name, count(*) AS count
+ FROM $via_table
+ GROUP BY $tag_table_name
+ ORDER BY count DESC
+ /);
+ # Set up the has_many relations
+ $via->has_a($target_table => $target);
+ $via->has_a($tag_table_name => $tag_class);
+ $target->has_many(to_PL($tag_table_name) => [ $via => $tag_table_name ]);
+ $target->has_many(to_PL($via) => $via);
+ $tag_class->has_many(to_PL($target_table) => [ $via => $target_table ]);
+ $tag_class->has_many(to_PL($via_table) => $via);