2013-10-21 31 views
1

我想從方法中返回頁面實體:getByPath($ path)。我只是想知道這個方法應該在腳本中的位置。在控制器內還是在實體類內部?Symfony PageEntity-> getByPath()或PageController-> getByPath()?

在我看來,實體「Page」不應該有一個叫做「getByPath()」的函數,因爲一個實體應該只包含一個實體的數據庫信息,這個實體可以被getter和setter獲取或設置。而這個「getByPath」函數不僅僅是一個getter或者setter,它需要我在實體中運行entitymanager。我對嗎?

所以我正確的做了一個PageController並在那裏創建了「getByPath()」(它將返回頁面對象)函數?或者是否有人會在實體類中創建該函數?

我想知道最好的方法是做什麼。

在此先感謝。

回答

2

你應該把這個函數的自定義庫中的網頁實體

雖然實體是你存儲的對象,該庫是提供方法來訪問類/當你調用加載這些對象,例如$em->getRepository('Entities\Page')->find($page_id);,你可以在你的頁面庫上調用find()方法,它的工作就是爲你找到它。

Doctrine爲每個實體(使用各種find*()方法...)提供默認存儲庫,但是您可以提供一個自定義方法,您可以在其中添加自己的方法,例如getByPath()

Symfony 2 - Database and Doctrine - Custom Repository Classes

Doctrine 2 - Custom repository

+0

作爲lepidosteus說,你需要做的是,在一個庫中。在這種情況下,你甚至不需要創建自定義的,只需從你的控制器調用它:'$ this-> getDoctrine() - > getEntityManager() - > getRepository('MyBundle:Page') - > findByPath('yourpathhere 「)' –