web-dev-qa-db-ja.com

Eloquentモデルインスタンスの主キーを取得する

MySQLデータベースの列名が非常に一貫性のある(そうではない)プロジェクトで作業できてうれしいです。 camelCase、PascalCase、 'Id'、IDがあります。アプリケーションでEloquentの使用を開始することにしました(Laravelではありません)。私は、列名を知らなくても簡単に主キーの値を受け取る方法が欲しいです。

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

これを行うための雄弁な方法はありますか、それとも自分でこのメソッドを追加する必要がありますか?

21
Basaa

モデルに保護フィールドを定義して、Eloquentに主キー列とは何かを伝える必要があります。

_protected $primaryKey = 'guid';
_

その後、モデルのそのプロパティにアクセスできます

モデルのgetKey()メソッドは主キーの値を提供し、getKeyName()は主キーに使用される列名を通知する必要があります

53
Mark Baker