I am trying to perform filter/search among multiple columns. I am stuck with this error:
SQLSTATE[HY093]: Invalid parameter number: Columns/Parameters are 1-based
Any idea what is it? The below code is my search model.
My Code:
$combo = explode('.',$this->storeNamesCombo);
$storeClasses = ArrayHelper::map(StoreClasses::find()->all(), 'id', 'name');
$storeFamilies = ArrayHelper::map(StoreFamilies::find()->all(), 'id', 'name');
$storePlatforms = ArrayHelper::map(StorePlatforms::find()->all(), 'id', 'name');
$mc_search = [];
$mf_search = [];
$mp_search = [];
foreach($combo as $item){
$temp_mc = array_search($item, $storeClasses);
if($temp_mc !== False){ $mc_search[] = $temp_mc; }
$temp_mf = array_search($item, $storeFamilies);
if($temp_mf !== False){ $mf_search[] = $temp_mf; }
$temp_mp = array_search($item, $storePlatforms);
if($temp_mp !== False){ $mp_search[] = $temp_mf; }
}
if(!empty($mc_search)){
foreach($mc_search as $item){
$query->andFilterWhere(['or', '"storeNames"."classId"' => $item]);
}
}
if(!empty($mf_search)){
foreach($mf_search as $item){
$query->andFilterWhere(['or', '"storeNames"."familyId"' => $item]);
}
}
if(!empty($mp_search)){
foreach($mp_search as $item){
$query->andFilterWhere(['or', '"storeNames"."platformId"' => $item]);
}
}
if(!empty($combo)){
foreach($combo as $item){
$query->where(['ilike', '"storeNames"."subFamilyName"', $item],
['ilike', '"storeNames"."variantName"', $item]);
}
}
Change your last statement to this:
if(!empty($combo)){
foreach($combo as $item){
$query->andWhere([
'or',
['ilike', '"storeNames"."subFamilyName"', $item],
['ilike', '"storeNames"."variantName"', $item]
]);
}
}