我經常會對創建函數的模型感到困惑。讓我試着用一個簡單的示例來解釋我目前的情況:這屬於哪個模特?
我有一個Log
模型,其中包含我們的應用程序的所有活動。我想要獲取特定用戶的活動。我應該在User
模型還是Log
模型中創建getActivity($userId)
函數?
我經常會對創建函數的模型感到困惑。讓我試着用一個簡單的示例來解釋我目前的情況:這屬於哪個模特?
我有一個Log
模型,其中包含我們的應用程序的所有活動。我想要獲取特定用戶的活動。我應該在User
模型還是Log
模型中創建getActivity($userId)
函數?
爲什麼不是兩個?
當然,最重要的是避免代碼重複,因爲這很難維護 - 而且是一個難看的解決方案。
日誌模型可能包含一個名爲getActivity()
的方法,該方法提取所有活動(或基於分頁和/或日誌級別所需的任何參數)。此外,爲了自我記錄的目的,創建一個名爲getUserActivity($userId)
的方法 - 這種方法有望看起來很自然。
用戶模型現在可以含有一種叫getActivity()
方法(同樣,有需要的分頁任何參數和/或日誌級別),這反過來又調用您的日誌模型getUserActivity()
方法。
這是最明智的選擇嗎?
好吧,從來沒有任何問題的單一解決方案 - 但我喜歡這個解決方案是,你現在有可能分開每個模型的邏輯,但仍然有一個可見的和功能之間的聯繫他們。其次,你知道有可能通過簡單的方式鏈接User對象來記錄活動。
爲了記錄,'getActivity'和'getUserActivity'可以是相同的方法,但有一個正確的參數,但我很喜歡爲每個用例分配邏輯和命名。 – Repox 2014-10-09 08:01:39
由於函數中主要使用的數據庫將是"Log"
之一,因此應將其放置在Log
模型中。
你應該寫在 - 日誌模型 – Khushboo 2014-10-09 07:47:15
如果我是你,我會把日誌模型中的getActivity功能 – justrohu 2014-10-09 07:47:24
你只有* 1 *模型。多個「模型」不是一件事。你可能並且應該在你的模型中有幾個*類*,但是你從來沒有真的有好幾個模型。 – deceze 2014-10-09 07:49:40