2015-05-27 37 views
1

這裏是我的透視表project_group校驗值,然後選擇[Laravel 5]

+-----+----------+------------+----------+---------+ 
| ids | group_id | project_id | admin_id | user_id | 
+-----+----------+------------+----------+---------+ 
| 4 |  115 |   1 |  1 | [3,4,5] | 
| 5 |  115 |   2 |  1 | [5,2,1] | 
| 6 |  115 |   3 |  1 | [1,3,6] | 

此表代表鏈接到項目組.... user_id是哪些用戶可以看到項目/ group ...是否有任何方法可以將正確的項目/組僅顯示給user_id中定義的用戶?

而且在user_id字段內容是可以改變....

+0

是的。 http://stackoverflow.com/questions/471914/can-you-split-explode-a-field-in-a-mysql-query – Dimi

+2

基本上從一些不良的數據庫設計中解決。不要存儲這樣的數據 – RiggsFolly

+0

它應該如何? –

回答

1

來處理這將是第一個規範化的數據庫的最佳方式。允許在單元格中存儲逗號分隔列表,但通常是不好的做法,如this question中所述。

如果你可以爲每個項目中的多個用戶,你應該有一個鏈接表與項目列和用戶列,就像這樣:

project_users: 
| project_id | user_id | 

,你可以做(​​PROJECT_ID,USER_ID)一複合主鍵。

這樣的話,你可以選擇用戶的項目(比如,項目1)所示:

SELECT user_id 
FROM project_users 
WHERE project_id = 1; 

一旦你有了這些,就可以顯示該項目的數據只給其id在返回上面的列表。

我已經構建了一個SQL Fiddle,如果有幫助,它可以幫助您在視覺上進行演示。

值得注意的是,這種適當的規範化提供了大量有用數據的機會,因爲按項目搜索用戶變得更加容易,而且您可以基於用戶搜索項目信息。

+0

謝謝!在我更改數據庫後,如何爲Laravel 5爲當前登錄的用戶選擇項目/組? –

+0

這是可能的,因爲我有2個數據透視表project_user,project_group? –

+0

@VladimirDjukic我不確定你的意思? – AdamMc331