2012-01-25 79 views
1

我有以下型號:資產和用戶 資產屬於關聯用戶 用戶的hasMany資產在這種情況下,多對多關係是絕對必要的嗎?

一個簡單的數據庫模型是這樣的

USER 
id 
name 


ASSET 
id 
name 
user_id 

現在真正的問題是關於一個下載表格建模事實上,用戶可以下載許多資產和資產,可以由許多用戶下載。

在CakePHP中,這將是一個users_assets表這樣一個簡單的模型:

USERS_ASSETS (alias Downloads) 
id 
user_id 
asset_id 

但是,這是令人困惑,因爲如果你用蛋糕的烘烤功能,你必須要分配比一間的關係 更多用戶和資產之間的上述關係和新的HABTM關係:即:

assets belongsTo Users | users hasMany assets 
assets hasAndBelongsToMany user | users hasAndBelongsToMany assets 

爲什麼我就不能有一個表調用的關係下載:

user belongsTo downloads | downloads hasMany Users 
asset belongsTo downloads| downloads hasMany Assets 

DOWNLOADS: 
id 
user_id 
asset_id 

我想我不知道是否可以爲給定的一組模型定義多個關係。

哪一個是最好的選擇,以及爲什麼 - 使用users_assets表和別名下載讓蛋糕知道HABTM關係。或者,使用名爲下載而沒有HABTM關係的表更好。

回答

1

在你的情況下,我會創建一個單獨的下載模型,並有「用戶hasmany下載」,「下載屬於用戶」,「下載屬於資產」和「資產hasmany下載」。無論如何,這就是habtm的意思。這樣下載模型可以有其他有趣的數據,如下載的日期和時間。除非你需要以非常簡單的方式訪問用戶下載的資產列表,並且不關心鏈接表,否則我不會打擾一個habtm關係。順便說一下,鏈接表可以被稱爲任何你想要的,你可以打電話給它下載,然後繼續用做事的方式。

至於你的其他問題,是的,你可以與模型有多重關係。你只需要使用不同的密鑰。例如,資產可以「屬於」作爲用戶的所有者,並且「屬於」作爲不同用戶的編輯器。

相關問題