以下函數可用。但我想一起使用「聲明」和「喜歡」。如果我用constraint1註釋掉該行並嘗試使用:在TYPO3 Extbase版本庫中使用語句和其他類似
$constraint1 = $query->statement("SELECT * FROM pages WHERE title LIKE '" . $text . "%'");
...查詢不起作用。
我得到了一個錯誤:
1:PHP開捕致命錯誤:傳遞給TYPO3 \ CMS \ Extbase \持久性\通用\庫姆\ QueryObjectModelFactory參數1 :: _或()必須實現接口TYPO3 \ CMS \ Extbase \ Persistence \ Generic \ Qom \ ConstraintInterface,TYPO3 \ CMS \ Extbase \ Persistence \ Generic \ Query的實例,在439行中調用並在[...] \ typo3 \ sysext \ extbase \ Classes中定義\持久性\通用\庫姆\ 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;
}
如果我改變follwing線:
$query->matching(
$query->logicalOr($constraint)
);
要 - logicalAnd:
$query->matching(
$query->logicalAnd($constraint)
);
...查詢爲空。
Thx for your reply.with constraint1我想搜索pages表,constraint2是擴展表,例如tx_example_domain_model_words – Johnny
總而言之,將從存儲庫中的其他表中獲取記錄。 「不能與createQuery結合」?但是,如果我用$ constraint1註釋掉該行並使用下面的行並將行更改爲: $ constraint = array($ constraint1); ...我得到記錄。 – Johnny
你可以用你想要達到的目標來確定你的問題嗎(不僅僅是不起作用)?表格「頁面」和你的擴展之間有什麼關係?它們如何連接?有了createQuery,你只能查詢具有Extbase模型的表格,「頁面」默認沒有一個(仍然可以添加一個)。如果你寫下你的目標,我可以幫你找到最好的方法。 – lorenz