Php SQLSTATE[42S22]:Laravel自命名列

Php SQLSTATE[42S22]:Laravel自命名列,php,laravel,laravel-5,Php,Laravel,Laravel 5,我已经为我的学校启动了一个新项目,所以我真的是拉威尔的初学者 我的拉威尔似乎在猜桌子的名字,而不是我。当我试图通过邮递员获取一些数据时,它说 “SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列'teachers.id'(SQL:select*from THERGERS where teachers.id=5限制1)” 但是“teachers.id”不是我的列名。它是“教师ID”,但它是猜的,而不是我 这可能是一个很容易搞笑的问题,但我真的是拉威尔的初学者 编辑 --

我已经为我的学校启动了一个新项目,所以我真的是拉威尔的初学者

我的拉威尔似乎在猜桌子的名字,而不是我。当我试图通过邮递员获取一些数据时,它说

“SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列'teachers.id'(SQL:select*from THERGERS where teachers.id=5限制1)”

但是“teachers.id”不是我的列名。它是“教师ID”,但它是猜的,而不是我

这可能是一个很容易搞笑的问题,但我真的是拉威尔的初学者

编辑


--

< P> <强> Dafault Laravel将把ID列作为主键>/P> 但如果不同,则可以使用:

 protected $primaryKey = 'primary_key_column';
为避免此类问题,请始终使用
id
作为主列

在调用关系时,Laravel还会猜测表名、本地键和外键。如果你的钥匙不是laravel期望的,那么你可以告诉laravel要找到哪把钥匙

Laravel guess表作为其模型类名的复数。

如果模型类是
User
,那么laravel将猜测表名为
users
如果您的桌子不同,则使用这一行

protected $table = 'your_table_name';

将代码粘贴到问题中在模型类中添加此行<代码>受保护的$primaryKey='Teacher_ID'@AfrazAhmad感谢上帝它与你的代码一起工作。但是,如果列不是主键,在这种情况下我能做什么呢。如何指定这样的列,或者该列是主键的专用列?Eloquent希望主键是
id
,因此当您使用
Model::find()
,它将查找该列,除非您通过设置
primaryKey
来覆盖它。它需要的唯一其他字段是时间戳和关系键,您也可以覆盖它们。其他任何东西都会看你说了什么。Laravel猜测列名的次数不多,但有些是主键(如在你的文章中)、本地键、外键(都是关系键,如
->belongsTo()
,等等)。所以我不会担心的,除非你遇到它。非常感谢。我祝你编程愉快:)很高兴听到这个消息。你也一样:)