首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >执行他人的控制器操作

执行他人的控制器操作
EN

Stack Overflow用户
提问于 2013-12-13 08:15:30
回答 2查看 92关注 0票数 0

我必须处理“测量链”,其中每一个是由一个测量仪器和几个坦克组成的。链条、仪器和油罐都在一个位置。

显然,位置A中的链不能由位于位置B或C中的元素组成。

所以我有以下的对象:

    • chain_id
    • location_id
    • instrument_id
    • date_creation
    • date_destruction

  • 仪器
    • instrument_id
    • location_id

  • 坦克
    • tank_id
    • location_id

  • TANK_IN_CHAIN
    • tank_in_chain_id
    • tank_id
    • chain_id
    • date_connection
    • date_disconnection

  • 位置
    • location_id

我想做的是:

  • 当我在一个新的位置(moveAction()在InstrumentController中)移动一个仪器时,应该去掉这个链子。
  • 当我在一个新的位置(moveAction()在TankController中)移动一个坦克时,应该去掉链子
  • “销毁”链意味着:所有相关坦克的chain.date_destruction设置为now(),tank_in_chain.date_disconnection设置为now()。这是在destroAction in ChainController中完成的(因为有时我也需要销毁链,即使没有任何仪器或坦克移动)

我的问题是:

我如何从InstrumentController::moveAction()或TankController::moveAction()调用ChainController::destroyAction()?

我读到了forward()函数,但据我所知,这并不是我所需要的。我看到的另一种可能性是将ChainController设置为服务,但我不确定这是解决此问题的正确方法,即它可能有效,但这不是“良好实践”。

你认为如何?

坦克需要任何帮助!干杯。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-13 10:04:09

您考虑过在控制器内部使用前向方法吗?

但对我来说,处理实体中可能导致另一个实体中的更改的正确位置是在实体级别。这意味着您的实体中应该有一些侦听器方法来侦听该实体的更改,这样它就可以触发相关实体的更改。在你的情况下,我会:

  • 一种仪器实体的PostUpdate方法
  • 坦克实体的PostUpdate方法
  • 然后在每一种方法中,为相关的链实体将date_destruction设置为now。

看一看原则生命周期回调http://symfony.com/doc/current/book/doctrine.html#lifecycle-callbacks

票数 0
EN

Stack Overflow用户

发布于 2013-12-13 08:26:25

这样做的好方法是定义您的控制器为服务

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

https://stackoverflow.com/questions/20561910

复制
相关文章

相似问题

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