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?
tak
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
$primarykey
powinno być$primaryKey
(wielka litera K) i nie będzie działać inaczej.$primaryKey = array('key1', 'key1');
github.com/laravel/framework/issues/5517#issuecomment-52996610class 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
źródło
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; }
źródło
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'; }
źródło
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.źródło
Aby przypisać klucz podstawowy, należy ..->
class User extends Eloquent { protected $primaryKey='admin_id'; }
źródło