Czy mogę zmienić klucz podstawowy modelu Eloquent.
Chcę na przykład ustawić klucz podstawowy admin_id
zamiast „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_id
zamiast „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 = false
inaczej 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 $primaryKey
dział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ć $primaryKey
wł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ć $incrementing
właściwość public w swoim modelu na false.
Aby przypisać klucz podstawowy, należy ..->
class User extends Eloquent {
protected $primaryKey='admin_id';
}
$primarykey
powinno być$primaryKey
(wielka litera K) i nie będzie działać inaczej.