我正在使用phalcon-datatables這是一個datatables適配器Phalcon PHP。Phalcon數據表適配器,其中條件不起作用
我有一個WHERE條件在我的QueryBuilder,e.g:
use \DataTables\DataTable;
class TestController extends \Phalcon\Mvc\Controller {
public function indexAction() {
if ($this->request->isAjax()) {
$builder = $this->modelsManager->createBuilder()
->columns('id, name, email, age')
->from('Example\Models\User');
->where("age = :age:", array("age" => 30))
$dataTables = new DataTable();
$dataTables->fromBuilder($builder)->sendResponse();
}
}
}
但是我有,當我使用全局搜索的問題。 where條件被忽略,然後它會顯示我的數據庫中的所有記錄與搜索條件。
當我使用列搜索時,它工作正常。
我認爲這個問題是在這個類 - >Github線21-23
因爲我們需要把所有列的全局搜索和使用這個庫orWhere全球搜索。
$this->bind('global_search', function($column, $search) {
$this->builder->orWhere("{$column} LIKE :key_{$column}:", ["key_{$column}" => "%{$search}%"]);
});
而列搜索使用和其中。
$this->bind('column_search', function($column, $search) {
$this->builder->andWhere("{$column} LIKE :key_{$column}:", ["key_{$column}" => "%{$search}%"]);
});
所以我想這就是爲什麼列搜索與在QueryBuilder的WHERE條件的作品。這就是全球搜索無效的原因。
你有什麼想法解決這個問題在庫裏面嗎?
編輯:
我想我有一個解決方案。我必須在orWhere上放上括號。
但我怎麼能做這個查詢與phalcon?
SELECT *
FROM `users`
WHERE age = 30
AND (name like '%d%'
OR email like '%d%'
OR login like '%d%')
你可以用你自己的類MyQueryBuilder擴展QueryBuilder來擴展QueryBuilder。然後用您的自定義修復程序覆蓋'getResponse()'方法。 – Timothy
這不是phalcon官方擴展。只需在此存儲庫上編寫問題並/或對其進行PR即可。 – Juri
我沒有修復我需要一些幫助來解決這個問題 – John