我试图将实体用于实现。
我有一个实体页面和另一篇文章。一个页面可以有多篇文章,但一篇文章仅适用于一页。
我的网页实体
namespace theatreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* pages
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="theatreBundle\Entity\pagesRepository")
*/
class pages
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;
//getters and setters
我的文章实体:
<?php
namespace theatreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* article
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="theatreBundle\Entity\articleRepository")
*/
class article {
/**
* @ORM\ManyToOne(targetEntity="theatreBundle\Entity\pages")
*/
private $pages;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="titre", type="string", length=255)
*/
private $titre;
/**
* @var string
*
* @ORM\Column(name="description", type="string", length=255)
*/
private $description;
/**
* @var string
*
* @ORM\Column(name="contenu", type="text")
*/
private $contenu;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
//getters and setters
我现在想要1页的所有文章。 我有一个变量$ page,其中包含$ nom属性。
我创建了一个
$articles = $this
->getDoctrine()
->getManager()
->getRepository('theatreBundle:article')
->findOneBy(array('nom'=> $page));
但是nom并不存在。谁知道怎么做?我很高兴这很简单......
祝你好运
编辑:
这可以这样做:
$id = $this
->getDoctrine()
->getManager()
->getRepository('theatreBundle:pages')
->findOneBy(array('nom'=> $page));
$articles = $this
->getDoctrine()
->getManager()
->getRepository('theatreBundle:article')
->findOneBy(array('pages'=> $id));
但是,为什么我创建了多对一关系?
答案 0 :(得分:2)
它只是一个简单的定义页面实体中文章的映射
use Doctrine\Common\Collections\ArrayCollection;
class pages
{
/**
* @ORM\OneToMany(targetEntity="article", mappedBy="pages")
*/
protected $articles;
public function __construct()
{
$this->articles= new ArrayCollection();
}
public function getArticles()
{
return $this->articles;
}
}
现在,您可以通过nom获取页面,页面的结果对象将包含其相关文章的集合
$page= $this
->getDoctrine()
->getManager()
->getRepository('theatreBundle:pages')
->findOneBy(array('nom'=> $page));
$page->getArticles(); /* All articles related to the queried page*/