我的数据库中有两个表,我想连接这两个表以在我的视图中显示数据,但我没有找到解决方案。
这是我在下面给出的第一个实体
/**
* @ORMEntity
*/
class classified
{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="IDENTITY")
*/
protected $classified_id;
/**
* @ORMColumn(type="integer")
*/
protected $user_id=0;
/**
* @ORMColumn(type="string")
*/
protected $firstname="null";
/**
* @ORMColumn(type="integer")
*/
protected $region_id="null";
第二个实体:
class regions
{
/**
* @ORMId
* @ORMColumn(type="integer")
*/
protected $region_id;
/**
* @ORMColumn(type="string")
*/
protected $regionname;
/**
* @ORMColumn(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
));
请问有什么解决方案吗?
编写漂亮干净的代码,
在回答之前,我建议您解决代码中的以下问题,
- 类名应该是CamelCase和单数(
Classified
而不是classified
,Region
而不是regions
) - 尝试找到一种更干净的方法来设置
country_id
(因为protected $country_id=107;
没有意义user_id
。
因此,为了获得分类实体及其相关区域,您必须:
首先,改变(在你的Classified
班)
/**
* @ORMColumn(type="integer")
*/
protected $region_id="null";
自
/**
* @ORMManyToOne(targetEntity="Region", inversedBy="classifieds")
* @ORMJoinColumn(name="region_id", referencedColumnName="region_id")
*/
protected $region;
并添加到您的Region
实体,
/**
* @ORMOneToMany(targetEntity="Classified", mappedBy="region")
*/
protected $classifieds;
深入了解文档的数据库和原则一章的实体关系/关联部分,了解如何使用 Doctrine 定义实体关联。