1

親レコード オブジェクトを子レコード オブジェクトにキャストする適切な方法が見つからないようです。

私のモデルは次のようになります。

ModelA:
  columns:
    col_a:integer

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

私はこのようなことをしたいと思います:

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

基本的に、フィールドとリレーションをハードコードすることなく、インスタンス A からインスタンス B にすべてのフィールドとリレーションをコピーする必要があります。

出来ますか?

4

1 に答える 1

2

IIRCには、phpでオブジェクトをキャストするオブジェクトはありません(ただし、ハックなソリューションがいくつかあります)。次のように、モデル オブジェクトのすべてのプロパティを別のオブジェクトにコピーできます。

$b = new ModelB();
$b->fromArray($instanceA->toArray());
$b->setColB('yepp')->save();
于 2013-03-21T20:42:07.947 に答える