情况如下:
我有模型A和模型B.模型A有模型B的外键(modelb_id)。
两种型号都有自己的形式。我将模型B的表单嵌入到表单A中。
class ModelAForm extends ....{
public function configure(){
unset($this['modelb_id']);
$this->embedRelation('ModelB');
}
}
问题:
当我保存表单时,它会保存ModelB,但它不会更改ModelA中外键的值(在模型A中,modelb_id仍为空)。
任何人都有线索?
答案 0 :(得分:0)
我总是遇到embedRelation()
的问题,直到找到一个名为ahDoctrineEasyEmbeddedRelationsPlugin的插件解决了我对表单嵌入问题的 ALL 。
我认为最好使用此插件,而不是一遍又一遍地调试嵌入。 :)
答案 1 :(得分:0)
如果要在保存一个表单时更新相关对象。您可以覆盖BasesfForm :: doUpdateObject方法。
在Form.class.php中,添加如下内容:
/* If you want to add some logic before updating or update other associated
* objects, this is the method to override.
*
* @param array $values An array of values
*/
public function doUpdateObject($values) {
// Handle the normal stuff that this method does
$this->getObject()->fromArray($values, BasePeer::TYPE_FIELDNAME);
$obj = $this->getObject();
// and, get the needed value
$val = $obj->getDesiredPropertyValue();
// use the value to update the related thing
foreach ($obj->getRelatedObjects() as $related)
{
$related->setColumnNamedThing($val);
}
}