我需要在 DQL 中做一个 sub-select
I need to do a sub-select in DQL
我有这个问题:
$query = $this->createQueryBuilder('l')
->select('l')
->leftJoin('l.processedLeads', 'pl')
->where('pl.company <> :company')
->andWhere('pl.company IS NULL')
->setParameters(array('company' => $company))
->getQuery();
但我需要它的格式如下:
SELECT * FROM leads WHERE NOT IN
( SELECT * FROM processed_leads WHERE lead = :lead AND company = :company)
我可以在连接的 2 个参数(lead_id 和公司)不存在的连接中执行子 select 吗?
例如,只有 select 特定公司的已处理线索中不存在的线索?
我不熟悉 QueryBuilder,但我会在 DQL 中推荐这样的东西:
$query = $em->createQuery('SELECT l FROM Project\model\leads l WHERE l NOT IN
(SELECT p.lead FROM Project\model\processed_leads p WHERE p.lead = ? AND company = ?)')
->setParameters(array($lead, $company))
->getResult;
希望对您有所帮助。我会使用 NOT IN
语句。如果子查询 returns 为 null 值,则该公司的 processed_leads 中没有潜在客户,您将获得所有潜在客户 - 在这种情况下应该没问题。
我有这个问题:
$query = $this->createQueryBuilder('l')
->select('l')
->leftJoin('l.processedLeads', 'pl')
->where('pl.company <> :company')
->andWhere('pl.company IS NULL')
->setParameters(array('company' => $company))
->getQuery();
但我需要它的格式如下:
SELECT * FROM leads WHERE NOT IN
( SELECT * FROM processed_leads WHERE lead = :lead AND company = :company)
我可以在连接的 2 个参数(lead_id 和公司)不存在的连接中执行子 select 吗?
例如,只有 select 特定公司的已处理线索中不存在的线索?
我不熟悉 QueryBuilder,但我会在 DQL 中推荐这样的东西:
$query = $em->createQuery('SELECT l FROM Project\model\leads l WHERE l NOT IN
(SELECT p.lead FROM Project\model\processed_leads p WHERE p.lead = ? AND company = ?)')
->setParameters(array($lead, $company))
->getResult;
希望对您有所帮助。我会使用 NOT IN
语句。如果子查询 returns 为 null 值,则该公司的 processed_leads 中没有潜在客户,您将获得所有潜在客户 - 在这种情况下应该没问题。