web-dev-qa-db-ja.com

Eloquentのデフォルトの主キーを変更する

Eloquentモデルの主キーを変更できますか。

'id'の代わりにadmin_idなどの主キーを設定したいですか?

私は次のようなモデルのテーブル名を変更できることを知っています

protected $table = "admin";

主キーに類似したものはありますか?

76
Vuk Stanković

はい

class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}
165
phirschybar
class User extends Eloquent {

    protected $primarykey = 'admin_id';

}

しかし

class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}

変数$ primaryKeyの文字K(大文字)に注意してください

12
user3186817

主キー変数は大文字と小文字が区別され、$primaryKeyである必要があります。

例:

protected $primaryKey = 'your_primary_key_id';

Modelクラス内の例:

class User extends Eloquent {

    protected $primaryKey = 'your_primary_key_id';

}
7
ajtrichards
class User extends Eloquent {

    protected $primaryKey = 'admin_id';

}

Laravelドキュメントによると:


Eloquentは、各テーブルにidという名前の主キー列があると想定します。 $primaryKeyプロパティを定義して、この規則をオーバーライドできます。

さらに、Eloquentは主キーが増分整数値であると想定します。つまり、デフォルトでは主キーは自動的にintにキャストされます。非増分または非数値の主キーを使用する場合は、モデルのpublic $incrementingプロパティをfalseに設定する必要があります。

1
Gammer

複合キー(文字列)を使用する場合

public $incrementing = falseを設定していることを確認する必要があります。設定しない場合、laravelはフィールドを整数にキャストし、0を与えます。

class User extends Model {

    protected $primaryKey = 'my_string_key';
    public $timestamp = false;

}
0
Toby Mellor