假設我的數據庫中有兩個表:Rabbits和Carrots。 兔子可以有0或多倍胡蘿蔔,胡蘿蔔屬於一隻兔子。這是兩張表之間的1,n關係。Symfony2 - 在Entity中訪問存儲庫函數
我有兩個實體,兔子和胡蘿蔔。
我在我的模板中傳遞了一串兔子,我想從每隻兔子身上得到具體的胡蘿蔔並顯示它們:比方說,我想要得到10個更昂貴的胡蘿蔔(胡蘿蔔價格將存儲在胡蘿蔔表中)從陣列中的每個$兔子。
喜歡的東西:
{% for rabbit in rabbits %}
{% for carrot in rabbit.getMoreExpensiveCarrots %}
{{ carrot.price }}
{% endfor %}
{% endfor %}
我使用存儲庫類,但如果我創建一個兔庫類的函數getMoreExpensiveCarrots($兔),我不能夠從實體訪問該功能一流的那樣,這是我想要的:
$ rabbit-> getMoreExpensiveCarrots()
我認爲一個辦法做到這一點會在兔子實體創建一個getMoreExpensiveCarrots():
// Entity rabbit
class Rabbit
{
public function getMoreExpensiveCarrots()
{
// Access repository functions like getMoreExpensiveCarrots($rabbit)
// But how can I do such thing ? Isn't that bad practise ?
return $carrots;
}
}
我想我可以做到這一點:
// Entity rabbit
class Rabbit
{
public function getMoreExpensiveCarrots()
{
$this->getCarrots();
// Then try here to sort the carrots by their price, using php
return $carrots;
}
}
這裏是我的控制器:
public function indexAction()
{
$em = $this->getDoctrine()->getEntityManager();
$rabbits = $em->getRepository('AppNameBundle:Rabbit')->getSomeRabbits();
return $this->render('AppNameBundle:Home:index.html.twig',
array(
"rabbits"=>$rabbits
));
}
什麼是調用從模板中的每個兔子getMoreExpensiveCarrots功能的最佳做法是什麼?
謝謝!
我喜歡這個兔子和胡蘿蔔的東西。<3 – 2014-06-03 00:40:09