laravel 有没有避免操作数据库时忘记添加where而导致全表修改或删除情况的方法
昨天本人3年职业生涯第一次、重大操作数据库事故,更新数据时忘记了加 where
,导致全表更新了,虽然解决了,还是有一种一朝被蛇咬,十年怕井绳的感觉..
人总有状态不好的时候
从代码层面上有没有什么方法避免这种情况?laravel有这方面的解决办法吗?
比较终极的方法还是 sql_safe_updates 但是对已有项目,以及数据库权限因素,实际并不能轻易改动。这也让我反省项目开始时就应考虑到避免这种情况,注意对 sql 的管理。
评论中Model
层代码判断 where
条件,大佬的建议也不错,但是查询构造器 DB
仍然不能覆盖,代码层面仍不能完美解决。
对重要的 sql 我建立了一个规范层,强制传入主键更新,如
public static function updateArticleQuery(int $id){
return DB::table('article')->where('id',$id);
}
但觉的这种无规范可言,所以这个问题无解,小心点就是了。
可以在mysql开启 sql_safe_updates