我有一個實體帳戶,它是一個有子女和父母的經典實體。我做到這一點的方式是,SQL關係只能由父母來確定。在數據庫中找到對象的子女
我想要的是每個對象的子對象列表。
在普通的舊PHP中,我只需循環一個mysql_fetch_array就可以擁有我的所有帳戶,並且每個請求都會再次請求DB到哪裏parent = id,然後將其放在我的帳戶對象的屬性children(array)中。
在Symfony2/doctrine中,似乎我不能那樣做,至少不是那麼簡單。
那我該怎麼辦呢?
編輯: 在我的控制器,這是我想怎樣做:
$COA = $this->getDoctrine()->getRepository('NRtworksChartOfAccountsBundle:Account')->findAll();
foreach($COA as $one_account)
{
echo $one_account.getChildren();
}
但是,這並不工作。當我將這個$ COA傳遞給我的樹枝時,我可以循環使用它,但不能在PHP中使用。
<?php
namespace NRtworks\ChartOfAccountsBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="Account")
*/
class Account
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100, unique = true)
*/
protected $name;
/**
* @ORM\Column(type="string", length=50)
*/
protected $code;
/**
* @ORM\OneToMany(targetEntity="Account", mappedBy="parent")
*/
private $children;
/**
* @ORM\ManyToOne(targetEntity="Account", inversedBy="children")
*/
private $parent;
public function __construct()
{
$this->children = new ArrayCollection();
}
//getter & setter
?>
您是否嘗試循環「帳戶」?在每個Account上調用'getChildren()'應該給你孩子們(如果關聯映射正確,否則工具欄將顯示一個錯誤)。什麼是上下文,在存儲庫中,在控制器中還是在小枝模板中? –
謝謝,很高興知道。看看我的編輯,我的問題是,我不知道如何循環我的賬戶 – Eagle1
'$ one_account.getChildren()'應該是'$ one_account-> getChildren()'。 –