Symfony 2多对多sql转换为dql
我在映射以前从未遇到过的多对多关系时遇到问题。我有两个实体文档,即exam和relationmany-to-many-document2examSymfony 2多对多sql转换为dql,sql,symfony,doctrine,dql,Sql,Symfony,Doctrine,Dql,我在映射以前从未遇到过的多对多关系时遇到问题。我有两个实体文档,即exam和relationmany-to-many-document2exam $em = $this->getEntityManager(); $query = $em->createQuery( "SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex FROM UcictDataBun
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
资料:
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
Entity/Document.php,
类文档{
private $id;
private $entryNumber;
private $isPaymentFree;
private $profile;
private $dateCreated;
private $dateModified;
private $exams;
private $invoice;
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
}
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
Entity/Exam.php
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
课堂考试{
private $name;
private $examCode;
private $dateTime;
private $startOnlineRegDate;
private $endOnlineRegDate;
private $endChangeDate;
private $session;
private $link;
private $documents;
private $isWriting;
private $examService;
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
}
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
参考资料/Document.orm.xml
<many-to-many field="exams" inversed-by="documents" target-entity="\Entity\Exam">
<join-table name="document2exam">
<join-columns>
<join-column name="document_id" referenced-column-name="id" nullable="false" on-update="CASCADE" on-delete="CASCADE" />
</join-columns>
<inverse-join-columns>
<join-column name="exam_id" referenced-column-name="id" nullable="false" on-update="CASCADE" on-delete="CASCADE" />
</inverse-join-columns>
</join-table>
<cascade>
<cascade-all />
</cascade>
</many-to-many>
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
由于document2exam表,我无法编写dql查询
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
谢谢,我的语言也很抱歉:我找到了我问题的答案
$em = $this->getEntityManager();
$query = $em->createQuery(
"SELECT en.entryNumber as enNum, IDENTITY(en.exam) as ex
FROM UcictDataBundle:ExamNotes en
WHERE en.exam = :exam
AND en.entryNumber NOT IN (
SELECT d.entryNumber
FROM UcictStudentBundle:Document d
INNER JOIN d.exams e
WHERE e.id = :exam
AND d.entryNumber is not null
)
ORDER BY en.entryNumber ASC");
$ret = $query
->setParameter('exam', $exam)
->getResult();
return $ret;
分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!也看到