php - Laravel 5.4 - 查询生成器问题

标签 php mysql laravel-5 laravel-5.4

我有一个名为“字符”的表。每行由/标识,有一个名为 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 where id = 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/

相关文章:

php - 数据库图库数组

php - Excel日期在mysql中更改为不同的日期

php - Google OAuth 2 - redirect_uri_mismatch 错误但 API 设置中的重定向 URI 是正确的

使用 SQL_CACHE 和 SQL_NO_CACHE 的 MySQL 最佳实践

php - Laravel 保存()未定义

mysql - Laravel 5 在 BETWEEN 中使用 OR 条件

php - 查询字符串中未捕获异常

php - 为什么这些值没有被正确求和?

javascript - Laravel + AngularJS Controller 已存在,但返回不是函数的错误

mysql - 优化MySQL中的UPDATE语句