CodeIgniter4中使用first()/findAll()报Unknown column错误原因咨询
问题原因及解决方案
核心原因:你在已开启软删除的模型中,手动添加了
'suppression' => null的查询条件,而模型本身会自动通过软删除作用域添加WHERE adresses_facturation.suppression IS NULL的过滤规则。当两者同时存在时,若模型的表名配置、字段名存在拼写/大小写差异,或者查询构建器对重复条件的解析出现冲突,就会触发"Unknown column"错误。为什么
get()->getRow()正常?
大概率是你改用该方法时,移除了手动添加的'suppression' => null条件,此时模型仅通过自动作用域添加正确的过滤规则,因此查询正常。若你是直接使用数据库查询构建器(而非模型方法),则绕过了模型的软删除作用域,手动指定的条件直接对应数据库字段,也能正常运行。
解决方案
直接移除手动添加的'suppression' => null条件即可,开启软删除的模型会自动过滤已标记为删除的记录:
public function getAdresse(int $idAdresse): ?object { return $this->where(['idFacturation' => $idAdresse])->first(); }
内容的提问来源于stack exchange,提问作者Steven Marchive
相关产品推荐
相关产品推荐

