Laravel 5 - SQLSTATE [22P02] - 使用postgres进行无效的文本表示

Mr.*_*hil 8 php postgresql syntax integer laravel

错误:

SQLSTATE [22P02]:无效的文本表示:7错误:整数的输入语法无效:"dismissnotification"(SQL:select*from"users",其中"id"= dismissnotification)

在我的routes.php文件中:

Route::get('user/dismissnotification/{notificationid}',array('as' => 'dismissnotification', 'uses' => 'NotificationController@dismiss'));
Run Code Online (Sandbox Code Playgroud)

我视图中与路线的链接:

 <a href="{{ URL::route('dismissnotification',$notification->id)}}">  <i class="fa fa-times"></i> </a>
Run Code Online (Sandbox Code Playgroud)

当我点击此链接时,页面被正确地重定向到(例如): http:// mywebsite/user/dismissnotification/222222225

我的NotificationController上的"dismiss"函数为空,但错误仍然存​​在.我不知道select * from "users"原始错误来自哪里.

public function dismiss($notificationid) {
        //
}
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗 如果我的函数中根本没有代码并且路由显然是正确的,那么可能导致此错误的原因是什么?

Tri*_*rip 2

SQL 查询显示 Laravel 在您的路线上调用的控制器方法与您预期的不同。

select * from "users" where "id" = dismissnotification
Run Code Online (Sandbox Code Playgroud)

该查询正在尝试查找 ID 与“dismissnotification”匹配的用户,因此看起来它会命中类似 UsersController@show 或 UsersController@edit 甚至 UsersController@222222225 之类的内容,具体取决于您为 /user 定义的其他路由。

由于 URL::route() 按照您的预期呈现了路径,因此您的问题可能是您定义路由的顺序;但是,如果没有看到您的所有 /user 路由以及您定义它们的顺序,我无法更具体。