私はphalcon-datatablesを使用しています。これはPhalcon PHPのdatatablesアダプターです。Phalconのデータ型アダプターは、状態が正常に動作しません。
私は例えば、私のQueryBuilderにWHERE条件を持っている:
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条件で列の検索が機能する理由だと思います。これがグローバル検索が機能しない理由です。
ライブラリ内でこの問題を解決する考えはありますか?
EDIT:
私は解決策を持っていると思います。私はかごにかっこをかける必要があります。
しかし、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