【问题标题】:Laravel Model::find() throws SQLSTATE errorLaravel Model::find() 抛出 SQLSTATE 错误
【发布时间】:2013-07-31 20:05:57
【问题描述】:

我正在尝试使用 Eloquent CRM 从数据库中获取记录。我的表的主键字段名称是"user_id"。奇怪的是,每次我使用User::find() 并传递一个user_id 号码时,我都会得到

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' 
(SQL: select * from `users` where `id` = ? limit 1) (Bindings: array ( 0 => 8, ))

我假设 ORM 会在假设表的 id 字段名称是 "id" 而不是 "user_id" 的情况下进行调用。我如何检查它是否正确地看到了它应该看到的东西。我还尝试将主键字段 user_id 更改为“id”,正如 ORM 所期望的那样,这很有效,但我在我的数据库架构中遵循命名约定,所以我想坚持"user_id"

我们将不胜感激任何形式的帮助。

谢谢

【问题讨论】:

    标签: php orm laravel eloquent


    【解决方案1】:

    我已经解决了这个问题。我所要做的就是正确阅读文档。很抱歉这么简单地问一个问题。

    Eloquent 假定任何表的主键字段默认命名为“id”。要更改它,只需将 $primaryKey 字段覆盖为数据库表中的相应字段名称即可。

    【讨论】:

      【解决方案2】:
      class User extends Eloquent implements ....
      
          public $publicKey = 'user_id';
      
          ...
      

      【讨论】:

      • 你要设置的不是$publicKey,而是$primaryKey。它应该受到保护,以便人们可以更改它,而不是公开。
      猜你喜欢
      • 2014-07-12
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多