0

我设置了两张表,一张名为 users,一张名为 work_order。

users表中,字段包括 *id, given_name, family_name*

work_order表包括 *id、create_date、due_date、description*

我想添加 created_by、request_by 和 own_by 字段,这些字段都仅限于 users 表中列出的用户。这样做的正确方法是什么?我会在工作订单表中有“_by”字段,还是需要一个带有 work_order_id、user_id 和某种角色字段的新表?

4

2 回答 2

0

首先,您的表应该是“work_orders”(复数),而不是“work_order”(单数)。没什么大不了的,只要您$useTable = "word_order";在模型中指定,但是 - 命名约定说表应该是复数。

因为您只处理三件事,并且不期望不断添加新字段,所以使用您提到的三个字段完全没问题(可能是我会做的):'created_by','requested_by',和 work_orders 表中的“owned_by”字段。

我想如果是我,我会遵循something_id约定并使用“creator_id”、“requester_id”和“owner_id”。不管怎样,这取决于你。

然后,当您设置关联时,您只需使用这三个字段与“用户”模型关联。在我的脑海中,它会是这样的:

//WorkOrder model

public $belongsTo = array(
    'Creator' => array(
        'className'    => 'User',
        'foreignKey'   => 'created_by' //could use 'creator_id' instead
    ),
    'Requester' => array(
        'className'    => 'User',
        'foreignKey'   => 'requested_by' //could use 'requester_id' instead
    ),
    'Owner' => array(
        'className'    => 'User',
        'foreignKey'   => 'owned_by' //could use 'owner_id' instead
    ),
);
于 2012-11-22T05:20:24.040 回答
0

您必须定义用户和工作订单之间的关系,以便以第 3 范式创建数据库方案。

一个用户可以创建多个工单吗?是否可以为多个用户创建工作订单?

一个用户可以请求多个工单吗?可以为多个用户请求工作订单吗?

一个用户可以拥有多个工单吗?是否可以为多个用户拥有一个工作订单?

一旦你回答了这些问题,你就可以开始处理数据库表了。

于 2012-11-22T10:47:54.903 回答