我需要在哪里进行“不喜欢”操作。我知道我可以这样做:
$predicate->like($a,$b);
但我找不到一种方法来执行“不喜欢”和其他否定的“不喜欢”。有什么办法,否则我将不得不在哪里制作字符串?
谢谢。
我需要在哪里进行“不喜欢”操作。我知道我可以这样做:
$predicate->like($a,$b);
但我找不到一种方法来执行“不喜欢”和其他否定的“不喜欢”。有什么办法,否则我将不得不在哪里制作字符串?
谢谢。
notLike
正如您提到的,在 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() 的 Object 方法而不是使用 literal() 的人参考
$predicate->notLike( $a, $b );
创建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;
}
测试
$select = new Select;
$select->from( 'dbTable' )
->columns( array() )
->where->notLike( 'column', '%test%' );
echo $select->getSqlString();