Czy mogę zmienić klucz podstawowy modelu Eloquent.
Chcę na przykład ustawić klucz podstawowy admin_idzamiast „id”?
Wiem, że mogę zmienić nazwę tabeli na model
protected $table = "admin";
Czy jest coś podobnego do klucza podstawowego?
Czy mogę zmienić klucz podstawowy modelu Eloquent.
Chcę na przykład ustawić klucz podstawowy admin_idzamiast „id”?
Wiem, że mogę zmienić nazwę tabeli na model
protected $table = "admin";
Czy jest coś podobnego do klucza podstawowego?
Odpowiedzi:
tak
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
$primaryKey = array('key1', 'key1'); github.com/laravel/framework/issues/5517#issuecomment-52996610
class User extends Eloquent {
protected $primarykey = 'admin_id';
}
ale
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
zwróć uwagę na literę K (wielka) w zmiennej $ primaryKey
Jeśli chcesz użyć klucza złożonego (ciągu)
Musisz się upewnić, że ustawiłeś public $incrementing = falseinaczej laravel rzuci pole na liczbę całkowitą, dając0
class User extends Model {
protected $primaryKey = 'my_string_key';
public $incrementing = false;
}
Zmienna klucza podstawowego uwzględnia wielkość liter i musi $primaryKeydziałać.
Przykład:
protected $primaryKey = 'your_primary_key_id';
Przykład w klasie Model:
class User extends Eloquent {
protected $primaryKey = 'your_primary_key_id';
}
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
Zgodnie z dokumentacją Laravel:
Eloquent zakłada również, że każda tabela ma kolumnę klucza podstawowego o nazwie id. Możesz zdefiniować $primaryKeywłaściwość, aby zastąpić tę konwencję.
Ponadto Eloquent zakłada, że klucz podstawowy jest rosnącą liczbą całkowitą, co oznacza, że domyślnie klucz podstawowy zostanie automatycznie rzutowany na int. Jeśli chcesz użyć nieinkrementującego lub nienumerycznego klucza podstawowego, musisz ustawić $incrementingwłaściwość public w swoim modelu na false.
Aby przypisać klucz podstawowy, należy ..->
class User extends Eloquent {
protected $primaryKey='admin_id';
}
$primarykeypowinno być$primaryKey(wielka litera K) i nie będzie działać inaczej.