【问题标题】:Get primary key of Eloquent model instance获取 Eloquent 模型实例的主键
【发布时间】:2015-08-08 01:07:26
【问题描述】:

我很高兴能够在我们的 MySQL 数据库中使用(不是)非常一致的列名来处理一个项目。我们有camelCase、PascalCase、'Id'、ID,这让我抓狂。我决定在我们的应用程序(不是 Laravel)中开始使用 Eloquent。我希望有一种在不知道列名的情况下轻松接收主键值的方法,例如

// User's primary key column is called UserID
$user = User::find(1337);
$userId = $user->id(); // = 1337

有没有一种 Eloquent 方法可以做到这一点,还是我必须自己添加这个方法?

【问题讨论】:

标签: php mysql laravel orm eloquent


【解决方案1】:

你应该在模型中定义一个受保护的字段,告诉 Eloquent 主键列是什么:

protected $primaryKey = 'guid';

然后您可以在模型中访问该属性

模型的getKey() 方法应该给你主键的值,而getKeyName() 应该告诉你主键使用什么列名

【讨论】:

    【解决方案2】:

    如果你想动态地做 -

    app("App\\Models\\" . $modelName)->getKeyName();//Laravel 8
    app("App\\" . $modelName)->getKeyName();//Laravel less than 8
    

    【讨论】:

      猜你喜欢
      • 2014-12-19
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2021-01-04
      • 2016-09-04
      相关资源
      最近更新 更多