先确认问题层级

Grid能打开,一筛选ID或状态就报Column is ambiguous。join的多个表都有同名列,而Filter仍使用裸字段。

从异常SQL确认冲突列和表别名,明确UI字段属于主表还是join表。

在Collection用addFilterToMap映射到main_table.entity_id或目标别名,Select列使用唯一alias。

修复方法

  • UI column name、filter与DataProvider字段保持一致,自定义addFilter保留condition type。
  • 同时测试排序、范围筛选和导出;只修WHERE不修ORDER BY仍会报错。
$collection->addFilterToMap('entity_id', 'main_table.entity_id');
$collection->addFilterToMap('status', 'main_table.status');

怎样才算解决

ID、状态、日期筛选与排序、CSV导出均正常,join不会造成重复行。