我正在使用Laravel 4和Postgres。
如果我在PGAdmin中运行以下语句
SELEC * FROM tables
我收到以下错误消息
ERROR: syntax error at or near "selec"
LINE 1: selec * from tables
^
********** Error **********
ERROR: syntax error at or near "selec"
SQL state: 42601
Character: 1
现在我在Laravel 4中运行以下查询
DB::select("SELEC * FROM tables");
我收到了很多其他错误信息。
是否有可能以某种方式实际获取原始的Postgres错误消息?
答案 0 :(得分:1)
如何使用pg_result_error()或甚至pg_last_error()?
$query = DB::select('...');
if($query) {
//do something
} else {
return pg_result_error($query);
}
答案 1 :(得分:0)
进入php artisan tinker
你可以这样做:
try {
// ... your code here .. //
} catch ( \Exception $objException ) {
$arrTrace = $objException->getTrace();
$query = $arrTrace[0]['args'][0];
$bindings = $arrTrace[0]['args'][1];
foreach ($bindings as $i => $binding){
if ($binding instanceof \DateTime) {
$bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
}
else if (is_string($binding)) {
$bindings[$i] = "'$binding'";
}
else if (is_bool($binding)) {
$bindings[$i] = $binding ? 'true' : 'false';
}
else if ( $binding === null ) {
$bindings[$i] = 'NULL';
}
}
// Insert bindings into query
$query = str_replace(array('%', '?'), array('%%', '%s'), $query);
$query = trim( vsprintf($query, $bindings) ) . "\n";
print $query;
}