Search code examples
phpinheritancesymfony-1.4doctrine-1.2

Can I cast parent record object to child record when using concrate table inheritance?


I can't seem to find a proper way to cast a parent record object to a child record object.

My models look like this:

ModelA:
  columns:
    col_a:integer

ModelB:
  inheritance:
    type:             concrete
    extends:          ModelA
  columns:
    col_b:integer

I'd like to do something like this:

$instanceB = (ModelB) $instanceA->copy();
$instanceB->setColB('whatever');
$instanceB->save();

Basically I need to copy all fields and relations in from instance A to instance B without having to hardcode the fields and relations.

Is it possible?


Solution

  • IIRC there is no object to object casting in php (there are some hacky solutions though). You can copy all properties of a model object to an another e.g. like this:

    $b = new ModelB();
    $b->fromArray($instanceA->toArray());
    $b->setColB('yepp')->save();