¿Puedo cambiar la clave principal del modelo Eloquent?
¿Quiero establecer la clave principal, por ejemplo, en admin_id
lugar de 'id'?
Sé que puedo cambiar el nombre de la tabla para un modelo como
protected $table = "admin";
¿Existe algo similar para la clave principal?
$primarykey
debería ser$primaryKey
(letra K mayúscula) y no funcionará de otra manera.$primaryKey = array('key1', 'key1');
github.com/laravel/framework/issues/5517#issuecomment-52996610class User extends Eloquent { protected $primarykey = 'admin_id'; }
pero
class User extends Eloquent { protected $primaryKey = 'admin_id'; }
observe la letra K (mayúscula) en la variable $ primaryKey
fuente
Si desea utilizar una clave compuesta (una cadena)
public $incrementing = false
Debe asegurarse de configurar, de lo contrario, laravel convertirá el campo en un entero, dando0
class User extends Model { protected $primaryKey = 'my_string_key'; public $incrementing = false; }
fuente
La variable de clave principal distingue entre mayúsculas y minúsculas y debe
$primaryKey
funcionar.Ejemplo:
protected $primaryKey = 'your_primary_key_id';
Ejemplo dentro de una clase de modelo:
class User extends Eloquent { protected $primaryKey = 'your_primary_key_id'; }
fuente
class User extends Eloquent { protected $primaryKey = 'admin_id'; }
Según la documentación de Laravel:
Eloquent también asumirá que cada tabla tiene una columna de clave primaria nombrada
id
. Puede definir una$primaryKey
propiedad para anular esta convención.Además, Eloquent asume que la clave principal es un valor entero creciente, lo que significa que, de forma predeterminada, la clave principal se convertirá automáticamente en un int. Si desea utilizar una clave principal no incremental o no numérica, debe establecer la
$incrementing
propiedad pública en su modelo en falso.fuente
Para asignar una clave primaria debe ..->
class User extends Eloquent { protected $primaryKey='admin_id'; }
fuente