[Dbix-class] table-per-subclass - how it works?

Hailin Hu i at h2l.name
Fri Jun 15 06:25:23 GMT 2012


Is it acceptable like something below

package Target;
...
package Host;
...
__PACKAGE__->belong_to('target' => 'Target', 'target_id');
sub column_only_exists_in_target {
  my $self = shift;
  return $self->target->column_only_exists_in_target;
}

well, it is not a good solution, but it could work, I think :)

On Fri, Jun 15, 2012 at 3:04 PM, Alex Erzin <eaa-home at yandex.ru> wrote:
> Hello,
>
> I need to implement table-per-class inheritance, as it simple made in Hibernate in Java (more details can be found here http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch10.html#inheritance-tablepersubclass),
> but cannot find right way how to do it in DBIx::Class.
>
> For example, I have two objects: Target (with properties ID, Description) and Host (ID, Hostname, IP), Host inherited from Target, and on table-level there are two tables Host and Target, joined by ID field.
>
> CREATE  TABLE  `mydb`.`target` (
>  `target_id` INT NOT NULL ,
>  `description` VARCHAR(45) NULL ,
>  PRIMARY KEY (`target_id`) )
>
> CREATE  TABLE `mydb`.`host` (
>  `target_id` INT NOT NULL ,
>  `hostname` VARCHAR(45) NULL ,
>  `ip` VARCHAR(45) NULL ,
>  PRIMARY KEY (`target_id`) ,
>  CONSTRAINT `fk_host_target`
>    FOREIGN KEY (`target_id` )
>    REFERENCES `mydb`.`target` (`target_id` )
> )
>
> How to implemeng there classes Target and Host, so it possible to write
>
> print $target->id(), $targer->description()
> print $host->id(), $host->description(), $host->hostname(), $host->ip()
>
> ?
>
> I have no ideas how to implement inheritance, and all my experiments are failed - from Host i cannot get access to parent properties like description.
> Could you help me please (with examples)?
>
> Thanks.
>
> --
> eaa@
>
> _______________________________________________
> 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