首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Symfony2 -实体中有创建虚拟字段的方法吗?

Symfony2 -实体中有创建虚拟字段的方法吗?
EN

Stack Overflow用户
提问于 2017-04-17 07:19:11
回答 1查看 1.9K关注 0票数 3

请帮助,我有一个表orderstotal_priceexchange_code (它包含货币代码如美元),exchange_rate (包含货币汇率类似: 1.7)。

现在,我想创建一个虚拟字段“exchangedTotalPrice”,它将包含exchangedTotalPrice= exchangeRate * totalPrice。

我不想在数据库中创建单独的列,因为我的db表中已经有太多列,我的要求是创建更多的虚拟字段。

如果您需要什么或不理解我的查询,请评论。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-17 08:14:55

您可以使用特定的方法来提供所需的内容(如注释中所述)。

代码语言:javascript
运行
复制
public function getExchangedTotalPrice() 
{
     // do the maths and return the result.

     $result = $this->exchangeRate * $this->totalPrice; 

     return $result;
}

有趣的是,你可以用表单或其他许多地方来连接它。

表单

例如,如果您有一个表单,其构建器如下所示:

代码语言:javascript
运行
复制
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。因此,接下来将使用上面定义的方法。

Twig

同样的情况也会发生在树枝上。

代码语言:javascript
运行
复制
{{ Orders.exchangedTotalPrice }}

这也将调用新字段上的getter。

我没有测试这些,所以您可能需要进行调试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43447023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档