TYPO3-如果记录的realurl路径不存在,则条令查询不在内部联接的位置

TYPO3-如果记录的realurl路径不存在,则条令查询不在内部联接的位置,typo3,typo3-extensions,typo3-8.x,typo3-8.7.x,Typo3,Typo3 Extensions,Typo3 8.x,Typo3 8.7.x,我正在呈现列uid、abc和表tx\u abc\u domain\u model\u abc的名称 。。。但是现在我只想呈现那些没有创建realurl路径的记录 所以我想我需要两个表tx_abc_domain_model_abc和tx_realurl_uniqalias的NOT-WHERE内部联接 table: tx_abc_domain_model_abc column: uid table: tx_realurl_uniqalias column: tablename = tx_abc_d

我正在呈现列uid、abc和表tx\u abc\u domain\u model\u abc的名称

。。。但是现在我只想呈现那些没有创建realurl路径的记录

所以我想我需要两个表tx_abc_domain_model_abc和tx_realurl_uniqalias的NOT-WHERE内部联接

table: tx_abc_domain_model_abc
column: uid

table: tx_realurl_uniqalias
column: tablename = tx_abc_domain_model_abc
column: value_id
操作控制器:

...
$statement = $queryBuilder  
    ->select('tx_abc_domain_model_abc.uid', 'tx_abc_domain_model_abc.abc', 'tx_abc_domain_model_abc.name')          
    ->from('tx_abc_domain_model_abc')
    ->join(
      'tx_abc_domain_model_abc',
      'tx_realurl_uniqalias'
      $queryBuilder->expr()->eq('tx_realurl_uniqalias.value_id', $queryBuilder->quoteIdentifier('tx_abc_domain_model_abc.uid'))
    )
   ->where(
      $queryBuilder->expr()->eq('tx_realurl_uniqalias.tablename', $queryBuilder->createNamedParameter('tx_abc_domain_model_abc')),
        )                                       
    ->execute();
...

这是正确的吗?但是怎么不去哪里呢

您可以使用->neq执行NOT操作:

->neq($fieldName, $value) 
以你的例子来说:

$queryBuilder->expr()->neq('tx_realurl_uniqalias.tablename', $queryBuilder->createNamedParameter('tx_abc_domain_model_abc'))

您可以在这里阅读:

在SQL中,这将是一种反连接模式。这将是一个外部连接,其中WHERE子句中有一个条件,用于检查表达式中的NULL,如果找到匹配项,则该表达式保证为非NULL。例如,要从a中获取b中没有匹配行的行,我们可以这样写:从b.a_id=a.id上的左连接b,其中b.a_id为NULL。请注意,通过相等比较,匹配行上的_id保证为非空。这也可以表示为不存在谓词,例如,从不存在的a中选择1,从b中选择1,其中b.a_id=a.id感谢提供信息。无论如何。。。你能提供一个反映上述情况的例子吗?我真的不能提供一个例子。。。我不知道antijoin或NOT EXISTS crsq的typo3语法。我怀疑typo3与其他ORM类似,因为文档和示例不承认反连接操作可能是我们想要做的事情。我的SQL结构留在了一条评论中,因为这是关于typo3的问题。我的问题是,如何让typo3发出并执行这样的反连接:从b.a_id=a.id上的左连接b中选择a.foo,其中b.a_id为NULL