我需要创建 1 个或多个文件来集中有关特定操作的所有功能,例如:
- 返回客户支票的总和。
- 关闭特定客户的支票。
- 将特定表的所有项目转移到其他。
但函数使用 2 个或更多模型,并在数据库(crud)中执行一些操作。
我需要创建一个行为或组件?
如何在行为/组件中使用 1 个或多个模型?参考?类注册表?加载模型()?
最好的做法是什么?
如果某些用户可以编辑我的文本,以便其他人更清楚,我很感激。并且,如果标题不正确,也要更改。谢谢你。
对不起我的英语。我知道这很糟糕。
您的票缺少大量信息,但让我尝试猜测一下:
这听起来像您有三个或四个模型,它们的数据应该相互关联。我认为它是这样的:
表:
协会:
您所谓的“lib”并且您想要触发的内容肯定是由单个操作触发的,例如“结帐”或“运行报告”操作。对我来说,这听起来像是您想要结帐购物车或为客户生成商品列表。
在您的 Customer 模型中有这样的方法:
public function report($customerId, $checkid) {
$sum = $this->Check->calculateSum($customerId, $checkId);
$checkClosed = $this->Check->close($checkId);
$items = $this->CartsItem->find('all', array(
'conditions' => array('CartsItem.customer_id' => $customerId)));
foreach ($items as $item) {
$this->BoughtItem->save($item['CartsItem']);
}
$this->CartsItem->deleteAll(array('CartsItem.customer_id' => $customerId));
return compact('sum', 'checkClosed', 'items');
}
如果您的数据不相关,请使用 ClassRegistry::init('ModelName'); 获取另一个模型的实例。
但关键是您所做的一切都是数据操作,因此对于模型方法来说这是一项明确的工作。如果您需要请求中的参数,只需将它们作为参数传递给该方法。您的方法可以返回您需要的任何内容,这取决于您。
“lib”不是您想要做的事情的正确位置甚至模式。