在Eloquent中更改默认主键

时间:2013-11-17 12:35:41

标签: laravel-4 eloquent

我可以更改Eloquent模型主键吗?

我想设置主键例如admin_id而不是'id'?

我知道我可以更改模型的表名,如

protected $table = "admin";

主键有类似内容吗?

6 个答案:

答案 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';

 }
相关问题