如何加入表学说symfony2



我的数据库中有两个表,我想连接这两个表以在我的视图中显示数据,但我没有找到解决方案。

这是我在下面给出的第一个实体

/**
 * @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而不是classifiedRegion而不是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 定义实体关联。

相关内容

  • 没有找到相关文章

最新更新