Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
yii2 ActiveQuery';或者像';滤波器_Yii2_Query Builder - Fatal编程技术网

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],
]);