2016-03-11 284 views
1

默認情況下,當在Laravel中創建控制器時,對於基本的CRUD操作,存在諸如createstoreedit,update等空方法。 CRUD就像在這種情況下使用的普遍接受的技術......但是例如對於用戶模型,我創建了2種方法:saveget我應該使用CRUD嗎?

public function save($user_id = FALSE, UserRequest $request) 
{ 
    $user = NULL; 

    if ($user_id) 
     $user = User::find($user_id); 
    else if (($request->has('email') or $request->has('username')) and $request->has('password')) { 
     $data = $request->only('username', 'email'); 
     $data = array_filter($data); 

     $user = new User($data); 
    } 

    if (is_null($user)) 
     return $this->ajaxResponse(['error' => TRUE, 'message' => 'User not found']); 

    if ($password = $request->get('password', FALSE)) 
     $user->password = Hash::make($password); 

    $user->fill($request->except('password', '_token')); 

    $user->save(); 

    return $this->ajaxResponse(); 
} 

正如你可以看到它由一個if如果我需要使用現有用戶或創建一個新的,檢查。類似於firstOrCreate方法,只是在所有檢查完成之前我不創建用戶。

所以基本上我的問題是關於我應該留在傳統CRUD或者如果它適合我​​的目的,我可以離開它,因爲它是現在。

回答

0

一般來說,如果你不能夠告訴它是否可以違反您所使用的框架強加的做法,那麼你離以下更好。

這就是說 - 遵循這個結構還有其他的好處,那就是「留在傳統的CRUD中」。 Laravel提供內置功能Restful Resource Controllers

這可以幫助您不必構建自己的架構風格,並確保您從更廣泛認可的事物中獲得一致的架構約束。

+0

在我的應用我有巨大的控制器,其中'store'和'update'方法略有不同所以我當然用'CRUD',但在應用程序也都像用戶創造它由幾個字段的\更新更小的東西更新。所以在將來我想在這些地方節省時間,並簡單地使用我在第一篇文章中發佈的方法。 Laravel資源控制器需要'PUT','DELETE'方法,這需要額外的時間來開發。 – Kin

1

據我所知,在Laravel控制器中的創建意味着顯示創建表單和存儲意味着存儲數據作爲您的保存功能。這裏的「創建」與CRUD中的「C」不同。

而近年來,越來越多的框架提供集成函數調用來簡化路由和複製過程。正如你所說,首先或創建可能包括檢查和保存行動,以儘量減少編碼工作。

我個人的經驗是混合使用。有時,您可以使用集成函數/庫來使代碼易於閱讀並快速完成。但有時您仍然需要回到最基本的一些優化或適合定製的邏輯或過程。

從我的角度來看,這不是一個「是」或「否」的問題。

1

添加到@ melson.jao的回答。

Laravel爲您提供的僅僅是指導。如果您覺得采用自定義樣式會使代碼更好,請繼續。

CRUD通常用於遵守諸如「書籍」,「項目」等實體的REST API兼容性。很少有實體需要的比普通實體需要的更多,比如您說過的「用戶」。

這將是一個設計決策,可能會從每個開發人員得到不同的意見。掌握您的代碼的可讀性和可維護性是您掌握的。

我的個人意見:在這種情況下,您不需要遵守指導原則。