Php 查询异常laravel上的格式错误消息

Php 查询异常laravel上的格式错误消息,php,laravel,Php,Laravel,我可以轻松捕获laravel查询异常,如下所示: try{ //code }catch(\Exception $e){ $err = $e->getPrevious()->getMessage(); } 此返回值$err为SQLSTATE[01000]:警告:第1行“column\u name”列的1265数据被截断 try{ //code }catch(\Exception $e){ $err = $e->getPrevious()->get

我可以轻松捕获laravel查询异常,如下所示:

try{
    //code
}catch(\Exception $e){
  $err = $e->getPrevious()->getMessage();
}
此返回值
$err
SQLSTATE[01000]:警告:第1行“column\u name”列的1265数据被截断

try{
    //code
}catch(\Exception $e){
   $err = $e->getPrevious()->getMessage();
   $b = preg_match('/(Data truncated for column) \'([a-zA-Z_]+)\'/', $err, $matches);
   if ( $b ) {
       // Found data truncated
       $message = $matches[1];
       $columnName = $matches[2];
   }
}
但是,我希望详细信息如下所述:

我的要求:

1) 我想检索列名<代码>//列名称

2) 检索唯一的错误消息部分
//为列截断的数据


是否有任何方法可以完全按照上面提到的方法获取数据。

您可以使用preg\u match来获取数据

$b = preg_match('/\'([a-zA-Z_]+)\'/', $err, $matches);
if ( $b ) {
    $columnName = $matched[1]; // this is what is between the quotes
}
如果你想得到引号之间的内容


您可以使用preg_match来获取数据

$b = preg_match('/\'([a-zA-Z_]+)\'/', $err, $matches);
if ( $b ) {
    $columnName = $matched[1]; // this is what is between the quotes
}
如果你想得到引号之间的内容


到目前为止您尝试了什么?到目前为止您尝试了什么?看起来它只适用于数据截断错误。它不适用于其他错误,因为
列的数据太长
。好吧,撇开这一点不谈,我怎么能只检索列名,也就是那些单引号之间的字符串呢?你问的那个特定错误,我就是这么回答的。看起来它只适用于数据截断错误。它不适用于其他错误,因为
列的数据太长
。好吧,撇开这一点不谈,我怎么能只检索列名,也就是那些引用之间的字符串呢?你问的关于那个特定错误,这就是我的答案。