我的数据库中有两个表,我想加入这个2表来显示我的视图中的数据,但我找不到解决方案。
这是我在下面给出的第一个实体
/**
* @ORM\Entity
*/
class classified
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $classified_id;
/**
* @ORM\Column(type="integer")
*/
protected $user_id=0;
/**
* @ORM\Column(type="string")
*/
protected $firstname="null";
/**
* @ORM\Column(type="integer")
*/
protected $region_id="null";
第二个实体:
class regions
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
*/
protected $region_id;
/**
* @ORM\Column(type="string")
*/
protected $regionname;
/**
* @ORM\Column(type="integer")
*/
protected $country_id=107;
}
在我的控制器中,我想加入该表以获取信息。
$em = $this->getDoctrine()
->getEntityManager();
$classified = $em->createQueryBuilder()
->select('b')
->from('BlogBundle:classified', 'b')
->addOrderBy('b.classifiedaddeddate', 'DESC')
->getQuery()
->getResult();
return $this->render('BlogBundle:Page:index.html.twig', array(
'classified' => $classified
));
有任何解决方案吗?
答案 0 :(得分:6)
写出漂亮的&干净的代码,
在回答之前,我建议您在代码中解决以下问题,
Classified
代替classified
和Region
代替regions
)country_id
(因为protected $country_id=107;
不会产生感觉。user_id
相同所以,为了让您的分类实体与其相关区域相关,您必须
首先,改变(在Classified
班级中)
/**
* @ORM\Column(type="integer")
*/
protected $region_id="null";
到
/**
* @ORM\ManyToOne(targetEntity="Region", inversedBy="classifieds")
* @ORM\JoinColumn(name="region_id", referencedColumnName="region_id")
*/
protected $region;
并添加到您的Region
实体
/**
* @ORM\OneToMany(targetEntity="Classified", mappedBy="region")
*/
protected $classifieds;
深入了解文档Entity Relationships/Associations章节的Databases and Doctrine部分,了解如何使用Doctrine定义实体关联。