我可以更改Eloquent模型主键吗?
我想设置主键例如admin_id
而不是'id'?
我知道我可以更改模型的表名,如
protected $table = "admin";
主键有类似内容吗?
答案 0 :(得分:159)
是
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
答案 1 :(得分:12)
class User extends Eloquent {
protected $primarykey = 'admin_id';
}
但
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
注意变量$ primaryKey
上的字母K(大写)答案 2 :(得分:7)
主键变量区分大小写,必须$primaryKey
才能正常工作。
示例:
protected $primaryKey = 'your_primary_key_id';
Model类中的示例:
class User extends Eloquent {
protected $primaryKey = 'your_primary_key_id';
}
答案 3 :(得分:1)
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
根据Laravel文档:
Eloquent还假设每个表都有一个名为id
的主键列。您可以定义$primaryKey
属性来覆盖此约定。
此外,Eloquent假定主键是递增的整数值,这意味着默认情况下主键将自动转换为int。如果您希望使用非递增或非数字主键,则必须将模型上的公共$incrementing
属性设置为false。
答案 4 :(得分:0)
如果您想使用复合键(字符串)
您需要确保设置public $incrementing = false
否则laravel会将字段强制转换为整数,并提供0
class User extends Model {
protected $primaryKey = 'my_string_key';
public $timestamp = false;
}
答案 5 :(得分:-2)
要分配主键,您应该..->
class User extends Eloquent {
protected $primaryKey='admin_id';
}