2014-10-09 69 views
0

我經常會對創建函數的模型感到困惑。讓我試着用一個簡單的示例來解釋我目前的情況:這屬於哪個模特?

我有一個Log模型,其中包含我們的應用程序的所有活動。我想要獲取特定用戶的活動。我應該在User模型還是Log模型中創建getActivity($userId)函數?

+0

你應該寫在 - 日誌模型 – Khushboo 2014-10-09 07:47:15

+0

如果我是你,我會把日誌模型中的getActivity功能 – justrohu 2014-10-09 07:47:24

+1

你只有* 1 *模型。多個「模型」不是一件事。你可能並且應該在你的模型中有幾個*類*,但是你從來沒有真的有好幾個模型。 – deceze 2014-10-09 07:49:40

回答

1

爲什麼不是兩個?

當然,最重要的是避免代碼重複,因爲這很難維護 - 而且是一個難看的解決方案。

日誌模型可能包含一個名爲getActivity()的方法,該方法提取所有活動(或基於分頁和/或日誌級別所需的任何參數)。此外,爲了自我記錄的目的,創建一個名爲getUserActivity($userId)的方法 - 這種方法有望看起來很自然。

用戶模型現在可以含有一種叫getActivity()方法(同樣,有需要的分頁任何參數和/或日誌級別),這反過來又調用您的日誌模型getUserActivity()方法。

這是最明智的選擇嗎?

好吧,從來沒有任何問題的單一解決方案 - 但我喜歡這個解決方案是,你現在有可能分開每個模型的邏輯,但仍然有一個可見的和功能之間的聯繫他們。其次,你知道有可能通過簡單的方式鏈接User對象來記錄活動。

+0

爲了記錄,'getActivity'和'getUserActivity'可以是相同的方法,但有一個正確的參數,但我很喜歡爲每個用例分配邏輯和命名。 – Repox 2014-10-09 08:01:39

0

由於函數中主要使用的數據庫將是"Log"之一,因此應將其放置在Log模型中。