2017-08-26 11 views
0

私は検索機能を備えたアプリケーションを作成しています。私はfind()関数の外でフィルタクエリを構築したいので、適用されるべき多くのフィルタはCakePHP 3.4アプリケーションcakephpの配列をクエリに構築する3

であり、これは私がIN BETWEENクエリの配列でクエリを作成する方法

$start_year = $this->request->getQuery('start_year'); 
$end_year = $this->request->getQuery('end_year'); 
$keyword = $this->request->getQuery('keyword'); 
$make = $this->request->getQuery('make'); 

$query_builder = []; 

if (!empty($keyword)) { 
    $query_builder['keyword'] = $keyword; 
} 
if (!empty($make)) { 
    $query_builder['make'] = $make; 
} 

if (!empty($start_year) && empty($end_year)) 
{ 
    $query_builder['year >'] = $start_year; 
} 

if (empty($start_year) && !empty($end_year)) { 
    $query_builder['year <'] = $end_year; 
} 

if (!empty($start_year) && !empty($end_year)) { 
    // how to written in BETWEEN query here on year column 
} 

$results = $this->Model->find() 
    ->where($query_builder); 

を達成したいものです?

答えて

1
if (!empty($start_year) && !empty($end_year)) { 
    $query_builder['year >='] = $start_year; 
    $query_builder['year <='] = $end_year; 
} 
+0

ありがとう。 +1これは –

+1

2番目の例では動作しません[**バインディング値**](https://stackoverflow.com/questions/26430259/cakephp-3-0-between-find-condition)のように動作しませんそれはもはやCakePHP 3.x! – ndm