如何在Laravel中查找无效文本表示形式的列名称7整数的错误错误输入语法?

Dha*_*hit 4 postgresql laravel

例如,我有一张桌子...

create table emp(  
  empno    integer,  
  ename    character varying(255),  
  job      character varying(255),  
  mgr      integer,  
  hiredate timestamp without time zone,  
  sal      double pricision,  
  comm     integer,  
  deptno   integer
)
Run Code Online (Sandbox Code Playgroud)

当我尝试插入数据时...

insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1,'abc','abc','e','2018-10-12 00:00:00',50.50,1,'f');
Run Code Online (Sandbox Code Playgroud)

然后这给了我一个错误,invalid text representation 7 error invalid input syntax for integer因为我已经插入了字符串值,mgr并且deptno只能通过查看值才能找到它,但是PostgreSQL没有给我确切的列名,在该列名中遇到了这样的问题。有什么办法可以在错误消息本身中获取列名。因为当我们有超过50到60列时,要找到有问题的列是一个挑战。

Ant*_*neB 7

您不必找出哪一列是错误的,因为在插入数据库之前,应确保输入的格式正确。

您正在使用Laravel,因此您应该利用其提供的强大工具集进行验证:https ://laravel.com/docs/5.8/validation

例如,在您的情况下,应mgr在控制器的开头使用以下规则进行验证:

$request->validate([
    'mgr' => 'number'
]);
Run Code Online (Sandbox Code Playgroud)

如果不遵守该规则,则将引发异常,从而在用户尝试输入数据时(而不是在后端尝试在数据库中插入数据时)失败。

  • 是的,但是你不应该 (2认同)