我有一個與Steps(OneToMany)和Article ManyToOne的步驟有關的表文章。Doctrine/Symfony2從關係表中獲取數據
我得到文章摘要:
$articles = $this->getDoctrine()
->getRepository("IftodiDesignBundle:Article")
->findAll();
而且用foreach我想告訴所有的文章和步驟:
foreach($articles as $article)
{
$steps = $this->getDoctrine()
->getRepository("IftodiDesignBundle:Steps")
->createQueryBuilder('s')
->where('s.article = \''.$article.'\'')
->getQuery()
->execute();
echo "<b>".$article->getTitle()."</b><br />";
echo $article->getText()."<br />";
}
我不知道如何從表步驟usign表獲取數據使用Doctrine生成的文章和方法getSteps()。
請幫幫我。
感謝您的回答。
在表格文章,我有:
/**
* @ORM\OneToMany(targetEntity="Steps", mappedBy="Steps",cascade={"persist"})
* @ORM\JoinColumn(name="id", referencedColumnName="id_article")
*/
protected $steps;
在表的步驟:
/**
* @ORM\ManyToOne(targetEntity="Article", inversedBy="steps")
*
*/
protected $article;
當我這樣做:
$articles = $this->getDoctrine()
->getRepository("IftodiDesignBundle:Article")
->findAll();
如果我做的:
foreach($articles as $article)
{
$steps = $article->getSteps();
我收到錯誤:
Notice: Undefined index: Steps in /var/www/design/vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1280
如果我這樣做:
$articles = $this->getDoctrine()
->getRepository("IftodiDesignBundle:Article")
->findAll();
foreach($articles as $article)
{
//Queries to DB
$steps = $this->getDoctrine()
->getRepository("IftodiDesignBundle:Steps")
->findBy(array(
"article" => $article->getId()
));
$media = $this->getDoctrine()
->getRepository("IftodiDesignBundle:Media")
->findBy(array(
"step" => $steps[0]->getId()
));
我可以得到我需要的數據,但這裏有多個詢問到數據庫。
幾個最佳實踐我知之甚少主義,但我會本能地嘗試'$物品─> getSteps();'。你嘗試過嗎? – AJJ
是的,一個嘗試過,但一個接收和錯誤。 –