Eloquentモデルの主キーを変更できますか。
'id'の代わりにadmin_id
などの主キーを設定したいですか?
私は次のようなモデルのテーブル名を変更できることを知っています
protected $table = "admin";
主キーに類似したものはありますか?
はい
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
class User extends Eloquent {
protected $primarykey = 'admin_id';
}
しかし
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
変数$ primaryKeyの文字K(大文字)に注意してください
主キー変数は大文字と小文字が区別され、$primaryKey
である必要があります。
例:
protected $primaryKey = 'your_primary_key_id';
Modelクラス内の例:
class User extends Eloquent {
protected $primaryKey = 'your_primary_key_id';
}
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
Laravelドキュメントによると:
Eloquentは、各テーブルにid
という名前の主キー列があると想定します。 $primaryKey
プロパティを定義して、この規則をオーバーライドできます。
さらに、Eloquentは主キーが増分整数値であると想定します。つまり、デフォルトでは主キーは自動的にintにキャストされます。非増分または非数値の主キーを使用する場合は、モデルのpublic $incrementing
プロパティをfalseに設定する必要があります。
複合キー(文字列)を使用する場合
public $incrementing = false
を設定していることを確認する必要があります。設定しない場合、laravelはフィールドを整数にキャストし、0
を与えます。
class User extends Model {
protected $primaryKey = 'my_string_key';
public $timestamp = false;
}