Форматировать сообщение об ошибке при исключении запроса laravel - PullRequest
1 голос
/ 29 марта 2020

Я мог бы легко поймать laravel исключение запроса как:

try{
    //code
}catch(\Exception $e){
  $err = $e->getPrevious()->getMessage();
}

Это возвращение $err как SQLSTATE[01000]: Warning: 1265 Data truncated for column 'column_name' at row 1

Однако мне нужны подробности, как указано ниже:

Мое требование:

1) Я хочу получить имя столбца. //column_name

2) Извлечь единственную часть сообщения об ошибке //Data truncated for column

Есть ли способ, которым я мог бы получить именно то, что упомянуто выше.

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Вы можете использовать preg_match для получения данных.

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];
   }
}

Если вы хотите получить только то, что находится в кавычках.

$b = preg_match('/\'([a-zA-Z_]+)\'/', $err, $matches);
if ( $b ) {
    $columnName = $matched[1]; // this is what is between the quotes
}
0 голосов
/ 29 марта 2020

Попробуйте это использовать isset

try{
    //code
}catch(\Exception $ex){
       $msg = $ex->getMessage();
       if (isset($ex->errorInfo[2])) {
           $msg = $ex->errorInfo[2];
        }
        $arr = array("status" => 400, "msg" => $msg, "result" => array());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...