我不確定如何建立某種關聯。HABTM通過屬於,可能嗎?
考慮以下型號:項目,文件夾,文件,業主 (這是類似於我想要實現的東西簡化的例子)
文件夾和文件的項目,並且項目所有者。
數據庫可能是這樣的:
items
id, is_folder, is_file, field_common_to_folders_and_files
folders
id, item_id, special_folder_field
files
id, item_id, special_file_field
owners
id, name
items_owners
id, item_id, owner_id
所以......
- 項目hasOne文件夾(如果is_folder)
- 項目hasOne文件(如果is_file)
項目hasAndBelongsToMany所有者
Folder be longsTo項目
文件belongesTo項目
...中的文件控制器:
$this->File->id = $id;
$data = $this->File->read();
pr($data);
輸出:
[File] => Array (
[id] => 100
[item_id] => 150
[special_file_field] => 'Only files do this'
)
[Item] => Array (
[id] => 150
[is_folder] => 0
[is_file] => 1
[field_common] => 'Both folders and files do this'
)
...但是,假設一個條目items_owners其中id = x,item_id = 150,和owner_id = 10,我不明白...
[Owner] => Array (
0 => Array (
[id] => 10
[name] => 'Me'
)
)
(我想讓Cake獲得File-> Item-> Owner)我是否錯過了一些東西?
我嘗試過的另一種方法是堅持在文件夾和文件中定義HABTM,但是當我需要它使用item_id字段時,連接表中的item_id使用文件夾和文件的ID字段,在HABTM中似乎沒有一個選項可以覆蓋它(你可以設置foreignKey和associationForeignKey,但不能設置主鍵[?])。
當然,一種可行的方法是在文件夾和文件中定義HABTM關係,並創建兩個連接表(folders_owners和files_owners),但我想尋求幫助,因爲1)我有更多的關係只是業主,並不想每個都有2個,而且2)這讓我感到困擾,因爲它感覺像是我失去了明顯的東西。
任何想法將不勝感激。
謝謝。
工作。謝謝!我會在這裏爲其他人留下這個問題。 – Synexis