CakePHP 2.1 hasAndBleongsToMany或hasMany通过?

我是CakePHP中hasAndBelongsToMany关系的新手。 我试图找出实施以下方案的最佳方法。 我是否使用hasAndBelongsToMany或hasMany?

在我的应用程序中,我正在创建维修订单。 维修订单有操作代码,分配给员工。 每个维修订单可以有多个操作代码。 所以,我可能会有类似于以下内容的东西:

RepairOrder1 - 由Employee1完成的OpCode1,由Employee2完成的OpCode2

根据我在手册中读到的内容,您不能使用HABTM关系来处理这种情况的原因是,在保存数据时,原始信息将首先被删除。 然而,在2.1中有一个“唯一”的密钥,您可以设置它让它保留现有的信息。 那么我是否创建了HABTM或hasMany?

编辑

这是我的模式:

/* repair_orders */
CREATE TABLE repair_orders (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    number VARCHAR(16),  //Auto-generated repair order number 
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

/* Employees */
CREATE TABLE employees (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(16), 
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

/* op_codes */
CREATE TABLE op_codes (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(16),
    sale_material DECIMAL(10,2),
    cost_material DECIMAL(10,2), 
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

我正在尝试将多个操作代码分配给维修订单,并跟踪哪位员工执行了特定的操作代码。 所以我可以有一个修理订单,有3个操作代码,每个代码都有不同的员工。 所以我认为这需要另一张桌子,如下所示:

/* repair_order_assignments */
CREATE TABLE repair_order_assignments (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    repair_order_id INT(16),
    op_code_id INT(16),
    employee_id INT(16)
);

所以我的协会是:

Repair_Order_Assignment hasMany Employee, Op_Code
Employee belongsTo Repair_Order_Assignment
Op_Code belongsTo Repair_Order_Assignment

Repair_Order_Assignment hasAndBelongsToMany Repair_Order
Repair_Order hasAndBelongsToMany Repair_Order_Assignment

然后根据手册,当hasAndBelongsToMany关联被保存时,关联首先被删除。 您将失去列中的额外数据,因为它在新插入中未被替换。 但是,它继续指出,在2.1中有一个可以设置为保存额外数据的唯一变量。 这个设置是否可以使用独特的密钥或者我应该使用hasMany through方法?


我想你会在这种情况下使用:

OpCode belongsTo RepairOrder
OpCode belongsTo Employee
RepairOrder hasMany OpCode
Employee hasMany OpCode

检索数据时,请使用CakePHP的Containable行为:

$this->RepairOrder->find('all',
    'contain' => array(
        'OpCode' => array(
            'Employee'
        )
    )
);
链接地址: http://www.djcxy.com/p/64877.html

上一篇: CakePHP 2.1 hasAndBleongsToMany or hasMany through?

下一篇: hasMany not fetching?