1

我需要创建 1 个或多个文件来集中有关特定操作的所有功能,例如:

  • 返回客户支票的总和。
  • 关闭特定客户的支票。
  • 将特定表的所有项目转移到其他。

但函数使用 2 个或更多模型,并在数据库(crud)中执行一些操作。

我需要创建一个行为或组件?

如何在行为/组件中使用 1 个或多个模型?参考类注册表加载模型()?

最好的做法是什么?


如果某些用户可以编辑我的文本,以便其他人更清楚,我很感激。并且,如果标题不正确,也要更改。谢谢你。

对不起我的英语。我知道这很糟糕

4

1 回答 1

1

您的票缺少大量信息,但让我尝试猜测一下:

这听起来像您有三个或四个模型,它们的数据应该相互关联。我认为它是这样的:

表:

  • 顾客
  • 查看
  • 购物车项目
  • 购买物品

协会:

  • 客户有很多支票
  • 客户有很多购物车项目
  • BuyItem 属于客户

您所谓的“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”不是您想要做的事情的正确位置甚至模式。

于 2013-02-22T01:05:21.837 回答