これは私の3番目のCakePHPアプリです。最初はHABTMタイプの関連付けが必要です。私はCake 2.1で作業しています.HABTMのパラメータが変更され、 '一意'キーを 'keepExisting'に設定することで余分な情報を保存できます。通常のHABTM関連では、2つのフィールド、それぞれの外部キーを持つテーブルがあります。私は3つの外部キーを持つものが必要だと思う。それは 'ユニーク'キーを使用することで可能ですか?または、関連を通じてhasManyを使用する必要がありますか?ここでCakePHP hasAndBelongsToMany vs 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
);
オペコードは、基本的項目とそのコストのリストです。
修理指図には多くのオペレーションコードが含まれています。また、各修理命令で特定のオペレーションコードに割り当てられている従業員を追跡する必要があります。だから私の団体は次のようになり
/* repair_order_assignments */
CREATE TABLE repair_order_assignments (
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メソッドを使用する必要がありますか?
よろしくお願いいたします。それを通してhasMany。 – Stewie