我有一个与 Steps (OneToMany) 和 Steps 与 Article ManyToOne 有关的表格文章。
我得到文章:
$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 />";
}
我不知道如何从表 Steps 中获取数据,使用表 Article 和使用 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()
));
我可以获得我需要的数据,但这里对 DB 的询问更多。