以下功能有效 . 但我想一起使用“声明”和“喜欢” . 如果我使用constraint1注释掉该行并尝试使用:
$constraint1 = $query->statement("SELECT * FROM pages WHERE title LIKE '" . $text . "%'");
...查询不起作用 .
我收到一个错误:
1:PHP Catchable致命错误:参数1传递给TYPO3 \ CMS \ Extbase \ Persistence \ Generic \ Qom \ QueryObjectModelFactory :: _或()必须实现接口TYPO3 \ CMS \ Extbase \ Persistence \ Generic \ Qom \ ConstraintInterface,TYPO3的实例给定的CMS \ Extbase \ Persistence \ Generic \ Query,在第439行[...]中调用,并在[...] \ typo3 \ sysext \ extbase \ Classes \ Persistence \ Generic \ Qom \ QueryObjectModelFactory.php第122行中定义
功能:
/**
* Test
*
* @param string $text
* @return Objects
*/
public function findWordsByText($text) {
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
$query->getQuerySettings()->setReturnRawQueryResult(TRUE);
$constraint1 = $query->like('title', $text . '%');
// $constraint1 = $query->statement("SELECT * FROM pages WHERE title LIKE '" . $text . "%'");
$constraint2 = $query->like('title', 'new');
$constraint = array($constraint1, $constraint2);
$query->matching(
$query->logicalOr($constraint)
);
$records = $query->execute();
return $records;
}
如果我更改了以下行:
$query->matching(
$query->logicalOr($constraint)
);
To - logicalAnd:
$query->matching(
$query->logicalAnd($constraint)
);
...查询为空 .
1 回答
我没有看到你的问题 . 您希望返回 Headers 字段中包含术语$ text或 Headers 字段中包含“new”的所有记录 . 所以只需使用一个简单的logicalOr查询:
$ query-> statement()用于原始SQL查询,不能与createQuery结合使用 .
顺便说一句,如果$ text来自POST或GET输入,请不要忘记清理输入 .