I have a task - add to the search model searching by full name. Full name is first name + last name. So I need to build query like
WHERE first_name LIKE '%var%' OR last_name LIKE '%var%'
The only way I could do it :
$query->andFilterWhere([
'OR',
'profiles.first_name LIKE "%' . $this->userFullName . '%" ',
'profiles.last_name LIKE "%' . $this->userFullName . '%"'
]);
But I don't like it because % it's unsafe. I don't know how... I think there is a way to build a such query with Yii2 active builder, and I would like to get in results smth like
$query->andFilterWhere(['LIKE', 'profiles.first_name', $this->userFullName]);
$query->andFilterWhere(['OR LIKE', 'profiles.last_name', $this->userFullName]);
The problem is in the query Like, I could use array as the values that attribute will be compared but I can't use array as list of attributes to be compared with.
or
$subQuery1 = Profile::find()->Where(['LIKE', 'profiles.first_name', $this->userFullName]);
$subQuery2 = Profile::find()->Where(['LIKE', 'profiles.last_name', $this->userFullName]);
// I think its overloaded(3 queries instead of 1 but still) and the final query
$query->andFilterWhere([
'OR',
$subQuery1,
$subQuery2
]);
Any ideas on how to build a query without "%"?