我尝试使用andFilterWhere
在mongoDB中对整数字段进行过滤。
$query->andFilterWhere(['like', 'code', $this->code ]);
此方法适用于String值,但对于整数值不起作用。如何将此方法用于整数字段?
答案 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 ]]);