尝试在symfony中进行内部联接

时间:2014-07-07 10:22:02

标签: sql symfony doctrine-orm inner-join

我收到错误“QueryException:[Semantical Error]第0行,第136页'idPat =:idP'附近:错误:类permissionRolePrl没有名为idPat的字段或关联” 当我尝试进行以下内连接时:

select pur.id_pur from 
permission_user_role_pur pur 
inner join
permission_role_action_pra pra
on pur.id_prl = pra.id_prl
where
pur.id_usr = 33
and pra.id_pat = 'TEST';

为此,我做了以下事情:

public function findByAction($idUsr, $IdPat)
{
    $query = $this->createQueryBuilder('pur')
                ->innerJoin('pur.idPrl', 'pra')
                ->where('pur.idUsr = :idUsr')->setParameter('idUsr', $idUsr)
                ->andWhere('pra.idPat = :idPat')->setParameter('idPat', $IdPat);

    return $query->getQuery()->getResult();
}

表格pra包含列:idPra(PK),idPat(str),idPrl(str)

表pur包含列:idPur(PK),idUsr(int),idPrl(str)

我该如何进行此查询?

1 个答案:

答案 0 :(得分:0)

首先将它用于你的班级

use Doctrine\ORM\Query\ResultSetMapping;

之后在您的函数中执行此操作并根据您的代码进行更改

$sql = "SELECT p.title, p.media_type, p.description
          from post p
          inner join post_hot h on p.id = h.post_id";


$rsm = new ResultSetMapping;
$rsm->addScalarResult('title', 'title');
$rsm->addScalarResult('media_type', 'mediatype');
$rsm->addScalarResult('description', 'description');

$query = $em->createNativeQuery($sql, $rsm);

$Ipost = $query->getResult();