2012-01-09 93 views
1

我有一個表email_addresses和一個表用戶。我使用用戶的電子郵件地址作爲他們的用戶名。因此,用戶表是這樣的:電子郵件屬於用戶 - 使用電子郵件作爲用戶名Cakephp 2.0.5

email_address_id 
password 

的email_address_id場也只是發現在EMAIL_ADDRESSES表中的電子郵件的用戶名作爲登錄信息。

我知道我可以將用戶名字段更改爲email_address與auth組件另一個名稱,但我如何使用不同表中的字段作爲用戶名?

現在我必須在電子郵件表和用戶表中插入電子郵件,這似乎是非常糟糕的數據庫設計。

任何幫助,將不勝感激!

我正在使用CakePHP 2.0.5

回答

2

你真的需要這樣做嗎?將所有屬於一起的東西放在一起很好。

我會將電子郵件保留在用戶模型中進行身份驗證。

使用email_addresses爲後續電子郵件,如果這是你想要的。

編輯:

現在,如果有人被授​​權訪問和其他沒有,我想添加一個字段在用戶模型,像has_access INT(1)或任何對你說話,並檢查它的值在登錄。

+0

我同意..還有一些可疑的關係。查看[此圖](http://mboffin.com/stuff/ruby-on-rails-data-relationships.png),帶有外鍵*的表屬於另一個表。所以你說「電子郵件屬於用戶」,你的意思是「用戶屬於電子郵件」。這本質上意味着「電子郵件擁有許多用戶」或「電子郵件擁有一個用戶」。你真的打算將一個電子郵件地址與許多用戶帳戶關聯嗎?另外,如果這是一個hasOne(1:1關係),那麼爲什麼多餘的表? – deizel 2012-01-09 17:25:58

+0

好吧,我有除了那些登錄數據庫的人以外的其他人的電子郵件地址。例如,它的工作原理如下:人員有一個EmailAddress - EmailAddress belongsTo Person。然後,其中一些「人員」也將被允許登錄。他們的電子郵件地址已經存在於表email_addresses中,將成爲他們的用戶名。所以我將不得不將他們的email_address插入到一個新表中。這不是一個hasMany關係,每個用戶只有一封電子郵件,我只是沒有看到添加數據庫中已存在的數據的關鍵點。 – 2012-01-09 18:08:16

+0

其實我錯了我目前使用的表格,雖然我不認爲它會改變任何東西。我將電子郵件地址作爲人員表中的一個字段。因此,每個人只有一個地址,然後我想這個人可能會使用users表中的電子郵件字段作爲他們的用戶名登錄。如果我不使用Cake,我覺得這是設計數據庫的最佳方式。我不能只在用戶表中收到電子郵件,因爲並非所有人都是用戶。爲什麼重複數據?我沒有看到好處。 – 2012-01-09 18:21:15

相關問題