如何在Yii2中对'整数字段使用'andFilterWhere'和'like'?

时间:2016-08-17 14:18:46

标签: php mongodb activerecord yii2

我尝试使用andFilterWhere在mongoDB中对整数字段进行过滤。

$query->andFilterWhere(['like', 'code', $this->code ]);

此方法适用于String值,但对于整数值不起作用。如何将此方法用于整数字段?

4 个答案:

答案 0 :(得分:2)

如果需要字符串,请尝试隐式转换或对var

进行esplicit cast或函数调用
$query->andFilterWhere(['like', 'code', $this->code .'' ]);

-

$query->andFilterWhere(['like', 'code', (string)$this->code  ]);

-

$query->andFilterWhere(['like', 'code', strval($this->code ) ]);

最终在起诉之前召集你了

$my_value = (string)$this->code ;

$query->andFilterWhere(['like', 'code', $my_value ]);

然后,如果'code'是整数,你可以尝试

$query->andFilterWhere(['like',  'CAST(code as CHAR(50))', $my_value ]);

否则你可以避免使用andFilterWhere并使用literal和Where

if (isset($this->code) {
  $query->andWhere(' CAST(code as CHAR(50)) like ' . $this->code; 
}

答案 1 :(得分:0)

这个例子帮助我解决了我的问题:

 if ($this->code)
            $query->andFilterWhere([
                '$where' => '/' . $this->code . '/.test(this.code')'
            ]);

答案 2 :(得分:0)

 $query->andFilterWhere(['=', 'code', $this->code ? (int)$this->code: null]);

答案 3 :(得分:-1)

使用或

$query->andFilterWhere(['or', ['like', 'code', $this->code ]]);

用和

$query->andFilterWhere(['and', ['like', 'code', $this->code ]]);