我要达到的目标是:
我有一张table和一张table type
包含整数值的字段。这些整数值表示不同的字符串。
我希望能够使用整数表示的字符串值搜索表。
例如 type =
而不是 type = 0
.
我尝试了什么:
我已经为模型创建了一个查询类,并尝试使用 $boolean_map
属性:
class ReportQuery extends FilterableQuery
{
protected $filterable = [
'type' => 'LIKE',
'removed_the_rest'
];
protected $boolean_map = ["type" => [ 'addacs' => 0, "arudd" => 1,]];
}
那么我已经覆盖了 find
使用查询类的模型的方法:
public static function find()
{
$query = new ReportQuery(get_called_class());
return $query;
}
在搜索模型中,我有:
public function search($params)
{
$query = Report::find();
$dataProvider = new ActiveDataProvider([
'query' => $query
]);
$this->load($params, '');
if (!$this->validate()) {
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'type' => $this->type,
]);
$query->andFilterWhere(['like', 'type', $this->type]);
return $dataProvider;
}
当按字符串值搜索时,我得到一个空结果。按整数值搜索生成数据。
感谢您的帮助。谢谢。
2条答案
按热度按时间aydmsdu91#
也许对您来说,对该列进行筛选比按字符串搜索更好。您可以对字符串执行以下操作。
或者在这个地方
您还可以在列上创建过滤器下拉列表,对于该过滤器的下拉列表,您可以传递这个数组并执行以下操作
ahy6op9u2#
为什么要在查询对象中创建Map机制?好的,在应用程序的前端将integer类型显示为字符串,但查询不应包含表示的详细信息。在搜索模型中,应该将字符串类型Map为整数类型。例如:
另一种方法是使用枚举而不是Map。