J'ai fait mes tests a cote et j'ai le résultat attendu, cependant le code est assez répétitif :
$get = $this - > request - > query;
if (!empty($get'name']) && !empty($get'state_id']) && !empty($get'province_id']) && !empty($get'city_id']) && !empty($get'category_id']) && !empty($get'price_min']) && !empty($get'price_max'])) {
$a = array(
'AND' = > array(
'OR' = > array(
'Article.name LIKE' = > "%".h($get'name']).
"%",
'Article.content LIKE' = > "%".h($get'name']).
"%",
),
'User.state_id' = > h($get'state_id']),
'User.province_id' = > h($get'province_id']),
'User.city_id' = > h($get'city_id']),
'Article.category_id' = > h($get'category_id']),
'Article.price BETWEEN ? AND ?' = > array(h($get'price_min']), h($get'price_max']))
)
);
} else if (!empty($get'name']) && !empty($get'state_id']) && !empty($get'province_id']) && !empty($get'city_id']) && !empty($get'category_id']) && !empty($get'price_min']) &&
empty($get'price_max'])
) {
$a = array(
'AND' = > array(
'OR' = > array(
'Article.name LIKE' = > "%".h($get'name']).
"%",
'Article.content LIKE' = > "%".h($get'name']).
"%",
),
'User.state_id' = > h($get'state_id']),
'User.province_id' = > h($get'province_id']),
'User.city_id' = > h($get'city_id']),
'Article.category_id' = > h($get'category_id']),
'Article.price BETWEEN ? AND ?' = > array(h($get'price_min']), 99999999)
)
);
}
.....
.....
.....
Ca test pour different cas, si le category_id est vide ou non, si tout est vide sauf la recherche par prix etc....
Si vous avez une methode qui pourrais me faire passer de 500 lignes à 100, je vous serai tres reconnaissant ;)
Cordialement AcidBrun