我有一个与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
是的,一个尝试过,但一个接收和错误。 –