Zend framework2 Zend Framework 2 PDO“;不象;活动

Zend framework2 Zend Framework 2 PDO“;不象;活动,zend-framework2,predicatebuilder,Zend Framework2,Predicatebuilder,我需要在一个地方做一个“不喜欢”的手术。我知道我可以做到这一点: $predicate->like($a,$b) 但我找不到一种方法来表演“不喜欢”和其他否定词,比如“不在”。有没有办法,否则我就得把绳子放在哪里 谢谢。正如您提到的,where对象上没有类似的方法。但是有一种literal方法,您可以在其中传递任何您想要的内容: $sql = new Sql($adapter); $select = $sql->select(); $select->from('foo')

我需要在一个地方做一个“不喜欢”的手术。我知道我可以做到这一点:

$predicate->like($a,$b)

但我找不到一种方法来表演“不喜欢”和其他否定词,比如“不在”。有没有办法,否则我就得把绳子放在哪里


谢谢。

正如您提到的,where对象上没有类似的
方法。但是有一种
literal
方法,您可以在其中传递任何您想要的内容:

$sql = new Sql($adapter);
$select = $sql->select();
$select->from('foo')
       ->where->literal('NOT LIKE ?', array('bar'));

echo $select->getSqlString();
输出将是:

SELECT "foo".* FROM "foo" WHERE NOT LIKE 'bar'

正如您提到的,where对象上没有类似的
方法。但是有一种
literal
方法,您可以在其中传递任何您想要的内容:

$sql = new Sql($adapter);
$select = $sql->select();
$select->from('foo')
       ->where->literal('NOT LIKE ?', array('bar'));

echo $select->getSqlString();
输出将是:

SELECT "foo".* FROM "foo" WHERE NOT LIKE 'bar'

供那些希望添加notLike()的对象方法而不是使用literal()的人参考

创建ZF2/Db/Sql/Predicate/NotLike.php

namespace Zend\Db\Sql\Predicate;

class NotLike extends Like {

    protected $specification = '%1$s NOT LIKE %2$s',

}
在ZF2/Db/Sql/Predicate/Predicate.php中添加

public function notLike( $identifier, $like ) {
    $this->addPredicate( new NotLike( $identifier, $like ), ($this->nextPredicateCombineOperator) ? : $this->defaultCombination  );
    $this->nextPredicateCombineOperator = null;
    return $this;
}
试验


供那些希望添加notLike()的对象方法而不是使用literal()的人参考

创建ZF2/Db/Sql/Predicate/NotLike.php

namespace Zend\Db\Sql\Predicate;

class NotLike extends Like {

    protected $specification = '%1$s NOT LIKE %2$s',

}
在ZF2/Db/Sql/Predicate/Predicate.php中添加

public function notLike( $identifier, $like ) {
    $this->addPredicate( new NotLike( $identifier, $like ), ($this->nextPredicateCombineOperator) ? : $this->defaultCombination  );
    $this->nextPredicateCombineOperator = null;
    return $this;
}
试验