我要做的就是验证查询。
'SELECT * from table_that_does_not_exist'
如果没有错误,我想知道它失败了所以我可以返回一个响应,指出“错误:表不存在”或一般错误。
答案 0 :(得分:39)
捕获任何sql
语法或查询错误的最简单方法是在为查询提供闭包后捕获Illuminate\Database\QueryException
:
try {
$results = \DB::connection("example")
->select(\DB::raw("SELECT * FROM unknown_table"))
->first();
// Closures include ->first(), ->get(), ->pluck(), etc.
} catch(\Illuminate\Database\QueryException $ex){
dd($ex->getMessage());
// Note any method of class PDOException can be called on $ex.
}
如果有任何错误,程序将die(var_dump(...))
无论需要什么。
注意:对于命名空间,如果该类未包含在\
语句中,则需要先use
。
答案 1 :(得分:1)
使用try-catch语句包装希望捕获异常的代码行
try
{
//write your codes here
}
catch(Exception $e)
{
dd($e->getMessage());
}
不要忘记说出控制器顶部的Exception类
Use Exception;
答案 2 :(得分:0)
如果要捕获所有类型的数据库异常,可以在laravel Exception Handler
if ($exception instanceof \PDOException) {
# render a custom error
}