[英]Laravel 5.2 route model binding error causing SQL unknown column error
我正在嘗試實現此程序包-https ://github.com/vinkla/hashids以混淆URL中的所有ID。
我創建了laravel 5.2的全新安裝,並創建了一個名為Orange.php的模型,並在其中填充了表格-
INSERT INTO `oranges` (`id`, `orange_name`) VALUES(1, 'test1'),(2, 'test2'),(3, 'test3');
我將以下內容添加到routes.php-
Route::bind('id', function ($id, $route) {
return Hashids::decode($id)[0];
});
Route::resource('orange', 'OrangeController');
Route::model('orange', 'App\Orange');
我還通過將以下功能添加到Orange.php-來覆蓋getRouteKey-
public function getRouteKey()
{
return Hashids::encode($this->getKey());
}
因此,getRouteKey應該對ID進行編碼以顯示URL,例如3轉到hgfdh,然后在這種情況下,我的路由綁定應該通過“ id”通配符將自身應用到使用id參數來解碼OrangeController.php的任何路由。
嘗試加載http:// localhost:8000 / orange / 3-時收到以下兩個錯誤
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'orange_name:"test3"' in 'where clause'
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'orange_name:"test3"' in 'where clause' (SQL: select count(*) as aggregate from `oranges` where `orange_name` = test3 and `orange_name:"test3"` <> {"id":3 and `created_at:"2016-06-23 09:30:39"` = updated_at:"2016-06-23 09:30:39"})
我認為此錯誤與-
Route::model('orange', 'App\Orange');
是否要綁定Orange實例而不是Orange的$ id? 如果是這樣,如何綁定$ id?
如果我注釋掉Route :: model定義,我會得到-
NotFoundHttpException in Handler.php line 103:
No query results for model [App\Orange].
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.