2015-12-09 39 views
1

所以我有一個我正在建設的API,它有一個「成員」模型。我圍繞一個預先存在的數據庫構建這個API,這個「成員」在它的基本查詢中有近16個關係。我現在應該建立我的API來回應像​​這樣的東西,並返回所有的退休金信息。這是一套全新的協會,以及一些已經建立的協會。我的問題是,是不是開始在MembersController中創建額外的控制器方法,比如showPension/showPensionSummary,還是應該將它們移出到不同的控制器....或者是否存在我缺少的選項c。Laravel API - 處理與許多協會的API「實體」

+0

id是會員的id嗎? –

+0

和是的身份證是會員的ID –

回答

1

是的,這是不好的做法,把它放在一個控制器。然後您不應用單一職責協議(SRP)。但如果我沒有錯,你有一個Member模型。會員與養老金有直接關係,因此您有Pension模型?如果你有{ID}多條航線從會員,您可以使用路徑模型,結合

public function pension() { 
    return $this->hasOne('App\Model\Pension'); 
} 

Member模型,你可以添加的方法等。將id參數更改爲{member}。然後在AppServiceProvider中添加以下代碼:

$router->bind('member', 'App\Models\Member'); 

在名爲Member的Controller文件夾內創建一個文件夾。在那裏添加一個MemberController和一個PensionController。在PensionController內部添加方法:showPension或只顯示(因爲您已經在控制器中)。這種方式更清潔。

public function show(\Illuminate\Http\Request $request) { 
    echo json_encode($request->member->pension); 
} 
+0

是的,但問題變成這樣。如果我將一個成員及其所有關係作爲API調用的一部分返回,那將是一個非常大的回報。考慮到所有事情後,總共可能有大約40種關係。所以當有人使用我的api的成員/ {id}端點時,他們是否應該回到成員每個關係的這個巨型json返回,或者我應該如何將api分割爲多個調用 –

+0

啊,現在我明白了。是的,只需使用上述方法即可。但在不同的控制器中使用。我建議在控制器文件夾內創建一個名爲members的文件夾。在那裏添加一個MemberController和一個PensionController。在養老金控制中使用上述內容。爲此使用路由模型綁定。所以控制器方法中唯一剩下的就是:echo json_encode($ request-> member-> pension); –

+0

這實際上是一個不錯的主意。我已經和我的一些模型做了類似的事情。我會玩弄它,看看我的感受如何。如果您想更新您的答案,我會將其標記爲已接受,除非其他人有更好的主意:P –