获取雄辩模型实例的主键

2022-08-30 14:09:37

我很高兴在我们的MySQL数据库中处理一个具有(不)非常一致的列名称的项目。我们有骆驼Case,PascalCase,'Id',ID,它让我发疯。我决定开始在我们的应用程序中使用Eloquent(这不是Laravel)。我希望有一种方法可以轻松接收主键的值,而无需知道列名,例如

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

有没有雄辩的方法可以做到这一点,或者我必须自己添加这种方法?


答案 1

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

protected $primaryKey = 'guid';

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

模型的方法应该给你主键的值,同时应该告诉你主键的列名getKey()getKeyName()


答案 2

如果你想动态地做到这一点 -

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

推荐