如何连接表原则symfony2
我的数据库中有两个表,我想加入这两个表以在视图中显示数据,但我没有找到解决方案 这是我在下面给出的第一个实体如何连接表原则symfony2,symfony,doctrine-orm,Symfony,Doctrine Orm,我的数据库中有两个表,我想加入这两个表以在视图中显示数据,但我没有找到解决方案 这是我在下面给出的第一个实体 /** * @ORM\Entity */ class classified { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $classified_id;
/**
* @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
));
有什么解决办法吗?写漂亮干净的代码
在回答之前,我建议您修复代码中的以下问题
类名应为CamelCase&单数分类而不是分类,区域而不是区域
尝试找到一种更干净的方法,将country\u id设置为protected$country\u id=107;不适用于用户id
所以,为了得到你的分类实体及其相关区域,你必须
首先,改变你的分类班
到
并添加到您的区域实体中
深入阅读文档一章中的部分,了解如何使用条令定义实体关联。编写漂亮干净的代码
在回答之前,我建议您修复代码中的以下问题
类名应为CamelCase&单数分类而不是分类,区域而不是区域
尝试找到一种更干净的方法,将country\u id设置为protected$country\u id=107;不适用于用户id
所以,为了得到你的分类实体及其相关区域,你必须
首先,改变你的分类班
到
并添加到您的区域实体中
深入阅读文档章节的部分,了解如何使用条令定义实体关联。您的模式不正确。你永远不应该在实体中写任何东西。可以通过引用而不是数据库ID将对象绑定到一起。请仔细阅读文档。您的架构不正确。你永远不应该在实体中写任何东西。可以通过引用而不是数据库ID将对象绑定到一起。请仔细阅读文档。您可能指的是OneToManytargetEntity=Classified,mappedBy=regionsorry我没有很好地解释我的问题,我的表区域充满了信息,因此我必须在合并两个表时提取这些信息。例如,我喜欢在分类时获取变量$regionname。region\u id=region.region\u id是,如果您的实体关联如我所建议的那样定义良好,那么获取regionname就很容易,$q=doctor\u Query::create->select'c.*,r.regionname'->from'classified c'->leftJoin'c.region r'->。。。花点时间深入阅读文档,以了解条令关联的所有可能用途。您可能指的是OneToManytargetEntity=Classified,mappedBy=regionsorry我没有很好地解释我的问题,我的表区域充满了信息,因此我必须在合并两个表时提取这些信息。例如,我喜欢在分类时获取变量$regionname。region\u id=region.region\u id是,如果您的实体关联如我所建议的那样定义良好,那么获取regionname就很容易,$q=doctor\u Query::create->select'c.*,r.regionname'->from'classified c'->leftJoin'c.region r'->。。。花点时间深入阅读文档,以了解条令关联的所有可能用途。
/**
* @ORM\Column(type="integer")
*/
protected $region_id="null";
/**
* @ORM\ManyToOne(targetEntity="Region", inversedBy="classifieds")
* @ORM\JoinColumn(name="region_id", referencedColumnName="region_id")
*/
protected $region;
/**
* @ORM\OneToMany(targetEntity="Classified", mappedBy="region")
*/
protected $classifieds;