yii2 ActiveQuery';或者像';滤波器
我有一个任务-添加到搜索模型按全名搜索。 全名是名+姓。所以我需要像这样构建查询yii2 ActiveQuery';或者像';滤波器,yii2,query-builder,Yii2,Query Builder,我有一个任务-添加到搜索模型按全名搜索。 全名是名+姓。所以我需要像这样构建查询 WHERE first_name LIKE '%var%' OR last_name LIKE '%var%' 我能做到的唯一方法是: $query->andFilterWhere([ 'OR', 'profiles.first_name LIKE "%' . $this->userFullName . '%" ', 'profiles.last_name LIKE "%' . $this->u
WHERE first_name LIKE '%var%' OR last_name LIKE '%var%'
我能做到的唯一方法是:
$query->andFilterWhere([
'OR',
'profiles.first_name LIKE "%' . $this->userFullName . '%" ',
'profiles.last_name LIKE "%' . $this->userFullName . '%"'
]);
但是我不喜欢它,因为它不安全。
我不知道怎么。。。
我认为有一种方法可以使用yii2activebuilder构建这样的查询,我希望得到类似的结果
$query->andFilterWhere(['LIKE', 'profiles.first_name', $this->userFullName]);
$query->andFilterWhere(['OR LIKE', 'profiles.last_name', $this->userFullName]);
问题是在查询中,我可以使用数组作为属性的值,但是我不能使用数组作为要比较的属性列表
或
任何关于如何构建不带“%”的查询的想法?您只需尝试:
$query->andFilterWhere([
'or',
['like', 'profiles.first_name', $this->userFullName],
['like', 'profiles.last_name', $this->userFullName],
]);
或
:与和
运算符类似,只是操作数使用或
串联。例如,['or'、['type'=>[7,8,9]]、['id'=>[1,2,3]]
将生成(输入(7,8,9)或(输入(1,2,3))
阅读更多信息:它有效吗?我无法检查,因为我已经离开了工作,但是如果它有效的话,我会检查很多。:)如何使用find_IN_SET查找逗号分隔的值?
$query->andFilterWhere([
'or',
['like', 'profiles.first_name', $this->userFullName],
['like', 'profiles.last_name', $this->userFullName],
]);