pan*_*hro 1 php laravel eloquent laravel-5 laravel-5.3
我的数据库中有一个 slug 列,它是独一无二的。
如果我尝试使用非唯一 slug 存储另一行,则会收到 QueryException 错误。
我发现了错误,并希望返回一条类似于“slug 存在”的错误消息。
try {
User::create($data);
} catch (\Illuminate\Database\QueryException $e) {
//return the error
}
Run Code Online (Sandbox Code Playgroud)
以上很好,但我只是想知道,如果抛出另一个 QueryException 怎么办,这与重复的 slug 无关,并且我错误地返回了重复的 slug 错误消息。
有没有办法找出查询异常是什么并基于此返回错误消息?我知道异常提供了它自己的消息,但我希望有一些更用户友好的东西。
要检查是否QueryException因为重复而得到 a ,请检查是否$e->getCode()等于23000。
当由于约束而发生重复时,MySQL 将发出signal SQLSTATE 23000您可以使用它来确定究竟出了什么问题。您可以在 MySQL 中实现您自己的信号以发出有关各种错误的信号(通过触发器等)
例子:
try {
User::create($data);
} catch (\Illuminate\Database\QueryException $e) {
if($e->getCode() === '23000') {
// you got the duplicate
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5331 次 |
| 最近记录: |