php
  • model-view-controller
  • orm
  • model
  • 2011-11-17 26 views 3 likes 
    3

    比方說,我有一個用戶對象進行使用ORM CRUD操作:ORM中的對象是否包含CRUD以外的操作?

    //Create a new User 
    $user = new User(); 
    $user->name = "John Smith"; 
    $user->age = 30; 
    $user->email = '[email protected]; 
    $user->save(); 
    

    Similiar操作也將是avaliable對ReadUpdateDelete

    但對於這樣的情況下:

    • deleteAllUsers() //delete all users
    • getAllUsers() //get all users
    • promoteUser() //change the user's 'rank' (not permissions) within a website
    • addReputationPoints() //give the user x amount of reputation points

    是將這些類型的操作進入User類?如果不是,他們應該去哪裏?我是否應該有一個名爲UserManager的課程來處理這些操作?

    +0

    您可能對這篇文章感興趣:http://stackoverflow.com/questions/8010764/best-practices-hibernate-persistence-code-inside-the-entity-itself –

    回答

    1

    通常,User類將擴展一個提供標準CRUD接口的ORM類。您所討論的附加功能將非常適合用戶類本身。

    製造'胖模型'和瘦身控制器總是一個很好的做法,也就是將所有與數據操縱直接相關的邏輯放在模型中,並且只有控制器中的'總體'邏輯。

    參見例如在這裏獲取更多信息http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model

    0

    在我最喜歡的框架(Kohana的),我們有:

    ORM::factory('user')->where(<whatever condition required>)->find_all(); 
    

    和相應的delete()(以上更換find_all())。你正在編寫自己的ORM庫嗎?如果是,那麼您可以將處理多個記錄的操作作爲類方法而不是實例方法。然而,這取決於你的設計。例如,Kohana仍然使它成爲實例方法。

    0

    這取決於你如何構建你的ORM解決方案。

    我的方法是將集體動作(一次製成多個記錄)放入一些類中,代表例如。數據庫表存儲用戶或負責基本ORM操作的用戶 - 具體取決於它們是否是表特定的。

    相關問題