请帮助,我有orders
表total_price
,exchange_code
(包含货币代码,如美元),exchange_rate
(包含货币汇率如:1.7)。
现在,我想在这里创建一个虚拟字段“exchangeTotalPrice'这将包含interchangeTotalPrice = exchangeRate * totalPrice。
我不想在数据库中创建单独的列,因为我的db表中已有太多列,而我的要求是创建更多虚拟字段。
如果您需要或不了解我的查询,请发表评论。
答案 0 :(得分:2)
您可以使用特定方法提供所需内容(如评论中所述)。
public function getExchangedTotalPrice()
{
// do the maths and return the result.
$result = $this->exchangeRate * $this->totalPrice;
return $result;
}
有趣的是,你可以在形式或许多其他地方挂钩。
<强>表格强>
如果您有一个表格,例如,建筑物看起来像这样:
public function buildForm(FormBuilderInterface $builder, array $options)
{
//... some other builder stuff here
$builder->add('exchangedTotalPrice', TextType::class, [
'mapped' => false, // this will stop the setter being called on submit
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'allow_extra_fields' => true, // youll need this to allow the extra field element
]);
}
当symfony尝试填充表单时,它将尝试根据字段名称调用getter和setter。因此,将依次使用您定义的方法。
<强>枝条强>
在树枝上会发生同样的事情。
{{ Orders.exchangedTotalPrice }}
这也会在新字段上调用getter。
我没有测试过这些,所以你可能需要调试。