使用laravel在AUTO_INCREMENT字段中设置id值

时间:2018-02-12 07:38:22

标签: mysql laravel

我试图在laravel 5中设置新行的值id,Point::create($value)new Point($value) $value包含一个id值,而且这个id在mysql中不存在D b。 每次我尝试新行时都有一个不在$value

中的自动ID

3 个答案:

答案 0 :(得分:2)

id模型类的fillable数组中添加Point

protected $fillable = [
    'id'
];

答案 1 :(得分:1)

您需要设置自定义主键:

protected $primaryKey = 'custom_key';

如果您没有PK,请执行以下操作:

protected $primaryKey = null;
public $incrementing = false;

另外,将其从fillable()数组中删除。在这种情况下,id将被忽略。

来自the docs

  

Eloquent还假设每个表都有一个名为id的主键列。您可以定义受保护的$primaryKey属性以覆盖此约定。

     

此外,Eloquent假定主键是递增的整数值,这意味着默认情况下主键将自动转换为int。如果您希望使用非递增或非数字主键,则必须将模型上的public $incrementing property设置为false。如果主键不是整数,则应将模型上的受保护$keyType属性设置为字符串。

答案 2 :(得分:0)

检查create上的Laravel documentation

您需要将键值对(数组)传递给create方法。并在那里指定id值,例如:

Point::create([
    'id' => 5,
    'x'  => 10,
    'y'  => 20,
])