phalcon-datatables 의 어댑터는 datatables입니다.Phalcon datatables 어댑터 조건이 작동하지 않습니다.
나는 예컨대, 내 QueryBuilder의 경우 조건이 있습니다
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 조건과 함께 작동하는 이유라고 생각합니다. 그리고 이것이 글로벌 검색이 작동하지 않는 이유입니다.
라이브러리 내부에서이 문제를 해결할 생각이 있습니까?
편집 :
나는 해결책을 가지고 생각합니다. 나는 그 (것)들에 대괄호를 써야한다.
그러나 어떻게 phalcon으로이 쿼리를 만들 수 있습니까?
SELECT *
FROM `users`
WHERE age = 30
AND (name like '%d%'
OR email like '%d%'
OR login like '%d%')
자신 만의 클래스 인'MyQueryBuilder extends QueryBuilder'로'QueryBuilder'를 확장 할 수 있습니다. 그리고 getResponse() 메소드를 커스텀 픽스로 덮어 쓴다. – Timothy
팔콘 공식 확장이 아닙니다. 이 저장소에 문제를 쓰거나 PR을하십시오. – Juri
수정이 필요하지 않습니다. 수정하기 위해 도움이 필요합니다. – John