gpt4 book ai didi

mysql - 设计最佳实践 - 模型 vs Controller vs UI - CakePHP、MySQL

转载 作者:行者123 更新时间:2023-11-29 23:23:29 25 4
gpt4 key购买 nike

我已经为这个问题苦苦挣扎了几天,最后在这个网站上征求了专家和群众的意见。

  1. 我有两个表 - 一个是工作流步骤的模板,另一个是这些工作流步骤的实例(称为事件)。模板表包含步骤名称、步骤类型等信息 - 非常通用的信息。事件表包含返回工作流步骤表的引用链接和一个称为注释的附加列,该列存储用户在记录特定工作流步骤时记录的数据。工作流程步骤和事件都链接到网站上的 POST

  2. 工作流程步骤模板可以在事件尚未发生的情况下存在 - 也就是说,用户可能仍在步骤 3 或步骤 5 上,并且没有记录步骤 1、2、4 的事件 - 基本上步骤的顺序只是具有暗示性但不具有约束力。工作流程步骤有一个顺序字段,用于规定它们在屏幕上显示的顺序。

  3. 事件也可以在没有工作流程步骤的情况下发生 - 换句话说,用户可以在工作流程步骤的上下文之外记录注释。这些是通用事件,与 POST 直接相关

  4. 我能够成功检索给定 POST 的这两个值 - 它们作为两个单独的数组进行检索。我正在使用 CakePHP 和 MySQL

  5. UI 需要呈现一个屏幕,按顺序显示所有工作流程步骤以及与这些步骤相关或在这些步骤之外发生的相应事件。屏幕的排序主要由工作流程步骤的顺序驱动,其次由与特定工作流程步骤无关的事件的created_date驱动

问题陈述 -1. 我是否将两个单独的数组(如#4 中所述)发送到 UI,并让 UI 确定如何交织步骤和事件进行显示的复杂逻辑?2. 我是否在 Controller 中处理步骤和事件的交织,然后向 UI 发送一个可以循环并显示的简单数组?3. 我尝试过将此逻辑移至数据库,但由于 #2 和 #3 中解释的变化,它变得相当复杂

我正在寻求建议,从设计实践以及简化的角度来看,哪种选择是更好的选择。我知道我在这里给出的图片有限,但我希望该网站上的某人可能在其他地方遇到了类似的问题。

最佳答案

根据您向用户分配事件的方式,我将在事件到工作流中建立 hasOne 关系。您的用户需要另一个关系,hasOne 或 hasMany。

$hasOne = 'Workflow';

显然,这意味着您的事件表将有一个名为 wordflow_id 的列,并且将与工作流程中的单行相关联。在 Controller 中,我将由用户调用事件。

$this->Event->findAllByUserId($user_id);

这应该为您提供一个可能看起来像这样的数组。

array(
[0] => array(
[Event] => array(
'id' => 1,
'name' => 'blah',
...
),
[User] => array(
'id' => 1,
'name' => 'Charles',
...
),
[Workflow] => array(
[0] => array(
'id' => 1,
'name' => 'more blagblagblag',
...
),
[1] => array(
'id' => 9,
'name' => 'sblagblsagblag',
...
),
[2] => array(
'id' => 42,
'name' => 'mordse d',
...
)
)
)
)

调用所有工作流程模板

$this->Workflow->find('all');

然后,我将使用 cake 的内置 SET::功能在您的 View 中打印工作流程模板,并使用您的事件调用来填充数据。

请发布更多详细信息以及您的代码、模型等,我相信我们可以为您提供实现此目标所需的确切查询/逻辑。

http://book.cakephp.org/2.0/en/core-utility-libraries/set.html

关于mysql - 设计最佳实践 - 模型 vs Controller vs UI - CakePHP、MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com