我试图在laravel 5中设置新行的值id,Point::create($value)
和new Point($value)
$value
包含一个id值,而且这个id在mysql中不存在D b。
每次我尝试新行时都有一个不在$value
答案 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,
])