我有一个名为“字符”的表。每行由/标识,有一个名为 char_id 的主键。我有路由和模板以及一些带有 CRUD 的 Controller ,所以 Laravel 工作正常。
当用户转到“character/{char_id}”(例如“character/2”)时,我希望能够显示由行 ID 标识的行。
我的网络路由中有以下代码:
Route::get('characters/{char_id}', function($char_id) {
$character = \DB::table('characters')->find($char_id);
dd($character);
});
但是当我访问“characters/1”或任何其他数字时,我得到这个错误:
QueryException in Connection.php line 647: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select * from
characters
whereid
= 1 limit 1)
无论我尝试从 URL 传递什么,它似乎都在寻找名为“id”的列。我正在学习一个使用“id”的教程,所以我怀疑我的代码正在寻找一个名为“id”的列,但我不知道如何解决这个问题。
最佳答案
这是因为默认情况下 find 检查 id
列,不使用模型解决这个问题的最简单方法是自己制作 where :
$character = \DB::table('characters')->where('char_id', $char_id)->first();
但是,如果你有一个角色模型,你可以设置:
protected $primaryKey = 'char_id';
然后使用查找:
App\Character::find($char_id);
关于php - Laravel 5.4 - 查询生成器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44170386/