2016-01-13 132 views
0

我正在處理的項目需要一種共享功能,這意味着當一個人創建一個練習時,他們可以選擇與另一個人分享該練習,併爲該練習附加一定的權限(即閱讀,寫或執行)。三種方式的雄辯關係

我有三個表(所有這些都有模型):用戶,練習和權限。在中間我有一個exercise_permission_user表,它只有三列:exercise_id,permission_id和user_id,它們都是指向它們各自表的外鍵。

問題在於在Laravel 5中建立這些表格之間的三對多關係。更具體地說,當一個人分享練習時,我需要輸入被共享練習的id,它所在的用戶與正在被添加到exercise_permission_user表中的權限共享。然後,我需要能夠查詢此表的user_id並查看與某個用戶共享的所有練習。如果用戶Mike的ID爲3,那麼我想查詢中間表中的該ID並找到他有權訪問的練習以及他被授予的權限。

當談到口頭禪時,我仍然在學習過程中,所以任何幫助都將不勝感激。我不一定要找人爲我建立這個,只需要一些幫助,這將給我提供必要的信息來完成我自己的工作。感謝所有幫助!

+0

這個問題與本網站創始人要求您「不問」的許多屬性相同。 http://stackoverflow.com/help/dont-ask查詢,對話和討論的開放式請求,沒有代碼,沒有明確的目標或系統定義。我們理解並同情你無法將這個大問題分解成可定義的第一步,但是stackoverflow不是這個頭腦風暴會議的場所。 –

+0

我很抱歉。我對Stack Overflow很陌生,不能很好地找到一種描述我的問題的方式,而不是那麼羅嗦。我會盡力在將來更體貼。 – Skylar01128

+0

這聽起來像是你的核心問題是:「我在mysql中有三個表,我想用下面的屬性對它們進行連接」。但是,然後你混合了對框架和PHP語言的要求,以及有關權限的內容。在這個頭腦風暴中,我可以看到大約5個具體的問題,如果你問任何一個問題,你可能會得到接待,而聰明的人會突然間做出有意義的迴應。投入一些額外的努力,向我們展示你的嘗試,發生了什麼,以及你期望發生的事情。 http://www.catb.org/esr/faqs/smart-questions.html#beprecise –

回答

0

我一直在努力解決這個問題幾次。就我所能研究的,我沒有找到一種Laravel原生的方式來編碼這種三對多的關係。我通常做的是爲數據透視表創建一個模型。因此,一個受保護的$ table屬性設置爲'exercises_permission_user'的SharedExercise模型(或您想使用的名稱)。在該模型中,您可以設置與用戶,練習和權限的關係。然後,您可以編寫:

$sharedExercises = SharedExercise::where('user_id', $userId)->get(); 

請注意表格和型號的命名。我通常使用laravel的約定來命名錶格,但是當我有這麼多的3種方法時,我試圖找到比約定更多描述的名稱。因此,例如,可以不使用Exercises_permission_user和ExercisePermissionUser模型,也可以使用shared_exercises和SharedExercise名稱。 請注意,這不是做到這一點的方法。這是我在文檔中未找到約定的結果。

+0

謝謝你的回覆!我不確定是否需要單獨的模型,但採取這一措施確實有助於解決這個問題。我很感激幫助。 – Skylar01128