在Yii2中搜索同一字段中的多个关键字

时间:2016-08-31 20:53:22

标签: yii2

我需要搜索出现在同一数据库字段中的几个关键字。例如,如果字段包含"快速的棕色狐狸跳过懒狗"有人搜索"快速"和#34;狗"这应该作为匹配返回。

所以我选择搜索字段并将其分解为基于空格的数组:

$terms = explode( " ", $this->search_term );

然后我想我会把它扔进一个循环中:

foreach ($terms as $key) {
    $query->andFilterWhere( [
        'or',
        [ 'like', 'item.name', $key ],
    ] );
}

然而,这不起作用,而且它不是很优雅。

2 个答案:

答案 0 :(得分:3)

你应该简单地构建条件参数,例如:

$condition = ['or'];
foreach ($terms as $key) {
    $condition[] = ['like', 'item.name', $key];
}
$query->andWhere($condition);

答案 1 :(得分:1)

我认为你必须通过使用或条件加入条件。

foreach ($terms as $key) {
    $query->orFilterWhere( [
        'or',
        [ 'like', 'item.name', $key ],
    ] );
}

这是你必须添加另一个或条件的方法。有关详细信息,请参阅here。 我想没有其他方法可以做到这一点而不做循环。