TableBuilder在join关联查询中AddFilter的局限性问题补充

TableBuilder在关联查询中,使用别名时,AddFilter(‘a.status’,['1'=>"test1",'2'=>'test2'])会出现报错。
此处,原有的方法中,是直接使用的表名作为join的别名,实际开发中会用字母代替,例如alias('a'),所以导致不兼容。建议调整如下:
\common\table\Builder.php,中的1504行处改为:通过  strlen($table)<2  做了个简要的判断别名,海豚官方可以参考下。
                        if (strlen($table)<2){
$filter_columns[$field] = [
'table' => $this->_table_name,
'field' => $field,
'filter' => $table . '.' . $field,
'map' => isset($filter_maps[$field]) ? $filter_maps[$field] : '',
'options' => isset($this->_filter_options[$value]) ? $this->_filter_options[$value] : '',
];
}else{
$filter_columns[$field] = [
'table' => $table,
'field' => $field,
'filter' => $table . '.' . $field,
'map' => isset($filter_maps[$field]) ? $filter_maps[$field] : '',
'options' => isset($this->_filter_options[$value]) ? $this->_filter_options[$value] : '',
];
}
已邀请:

dolphinphp

赞同来自:

感谢您的建议!
目前ZBuilder里使用的别名都是用表名的,主要是考虑到直接用Db::view方法查询的情况。后续版本会继续改进,支持自定义别名。
再次感谢您的建议!

要回复问题请先登录注册