Это построитель массивов и запросов yii
$arr = ['delhi','mumbai']; $query->orWhere(['LIKE','city',$arr."%",false]);
Я хочу сгенерировать, где условие, подобное этому
where city like 'delhi%' or city like 'mumbai%'
Исходный код ссылки: \yii\db\QueryBuilder::buildLikeCondition()
\yii\db\QueryBuilder::buildLikeCondition()
$cities = ['city1', 'city2', 'city3']; $query = new \yii\db\Query(); $query->where(['or like', 'city', array_map(function ($item) { return $item.'%'; }, $cities), false]); print_r($query->createCommand()->rawSql); // output: SELECT * WHERE `city` LIKE 'city1%' OR `city` LIKE 'city2%' OR `city` LIKE 'city3%'
Просто используйте SIMILAR TO в Postgres или REGEXP_LIKE в MySQL (в зависимости от вашей базы данных) вместо LIKE
Например, ваш запрос должен выглядеть следующим образом:
$query->andWhere(['SIMILAR TO', 'city','('.implode('|', $arr).')%',false]);