Question

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?

Was it helpful?

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();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top