【问题标题】:Can I cast parent record object to child record when using concrate table inheritance?使用具体表继承时,我可以将父记录对象转换为子记录吗?
【发布时间】:2013-03-21 19:26:44
【问题描述】:

我似乎找不到将父记录对象转换为子记录对象的正确方法。

我的模型如下所示:

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,而无需对字段和关系进行硬编码。

有可能吗?

【问题讨论】:

    标签: php inheritance symfony-1.4 doctrine-1.2


    【解决方案1】:

    IIRC 在 php 中没有对象到对象转换(there are 虽然有一些 hacky 解决方案)。您可以将模型对象的所有属性复制到另一个,例如像这样:

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

    【讨论】:

    • 正是我想要的!谢谢!
    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2014-07-14
    • 2013-06-02
    • 1970-01-01
    相关资源
    最近更新 更多