Zend 框架 2 "select where not in"

Zend Framework 2 "select where not in"

我有一个简单的查询,其中有一个 $posts 数组,其中包含某些帖子的 ID。我基本上 select 正在处理与这些帖子相关的文件:

        ->from(
            ['DO' => 'DOCUMENT']
        )
        ->columns(
            [
                'POST_ID',
                'FILENAME'
            ]
        )
        ->where('DO.FILENAME LIKE "%'.$format.'%"')
        ->where(['DO.POST_ID' => $posts])
        ->order('DO.FILENAME DESC');

现在我想 select 与这些帖子无关的文件。所以我需要做相反的事情:

        ->where(['DO.POST_ID' => $posts])

我不知道怎么办?

您需要使用NOT IN操作

   ->from(
            ['DO' => 'DOCUMENT']
        )
        ->columns(
            [
                'POST_ID',
                'FILENAME'
            ]
        )
        ->where('DO.FILENAME LIKE "%'.$format.'%"')
        ->where->addPredicate(new Zend\Db\Sql\Predicate\Expression('DO.POST_ID NOT IN (?)', array($posts)))
        ->order('DO.FILENAME DESC');