我使用cakePHP 2.0 afterFind()回调在数据库值显示之前对其执行计算。cakePHP afterFind和Association Values
我有三种模型 - 材料,产品和报价。
每个产品具有一材料和计算使用该关联在产品一个afterFind回调进行,特别是与线路:
$results[$key]['Product']['material_cost'] = $results[$key]['Product']['material_mass'] * $val['Material']['cost'];
$val['Material']['cost']
与参考相关联的材料。
目前为止还不错。
接下来我在我的报价模型中有一个afterFind()回调。报价与产品相关联,报价模型中的计算取决于产品模型中的计算 - 特别是对材料进行评估的计算。
我可以引用产品型号一个afterFind的报价模型结果一个afterFind就好了,如:$val['Product']['number_tools']
不过,现在的产品型号无法找到相关的材料和我得到的错误: 未定义指数:材质[APP /Model/Product.php,第126行]。
在线Product.php的126
$val['Material']['cost']
我怎样才能解决这个问题得到,它的驾驶我疯了!
一般通常总是来计算这些东西“按需”一个好主意 - 前不久实际输出它。主要优点是如果不需要这些计算就不会完成,例如,如果发生重定向或者只有标题等将显示在视图中。 – mark 2012-02-15 13:56:30
无论何时查询数据库,都需要或多或少的计算,以便afterFind回调完全符合我的要求,并在数据发送到视图之前即时执行计算。 - 另外它允许我保留模型中的所有逻辑。 – Ralphonz 2012-02-15 14:19:35