SQLSTATE [42S22]:Laravel自命名列

时间:2018-08-16 18:37:48

标签: php laravel laravel-5

我为我的学校启动了一个新项目,所以我真的是Laravel的初学者。

我的Laravel似乎在猜测表名而不是我。当我尝试使用邮递员获取一些数据时,它说;

“ SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'teachers.id'(SQL:从* where where教师.id = 5限制1的教师中选择*)”。

但是“ teachers.id”不是我的列名。它的“ Teacher_ID”,但它代替我猜测。

这可能是一个非常简单的问题,但我确实是laravel的初学者。

编辑。

Error-Routes-Controller-Table Migration-Model-Resource

1 个答案:

答案 0 :(得分:3)

Dafault Laravel会将id列视为PRIMARY KEY

但是如果不同,则可以使用:

 protected $primaryKey = 'primary_key_column';

为避免此类问题,请始终使用id作为主列。

Laravel在调用关系时也会猜测表名称,本地键和外键。如果您的钥匙不是laravel期望的钥匙,那么您可以告诉laravel查找哪个钥匙。

Laravel猜测表为其模型类名称的复数形式。

如果模型类为User,则laravel会猜测表名称为users 如果您的表不同,请使用此行。

protected $table = 'your_table_name';