订单Order模型覆盖主键后
protected $primaryKey = 'no';
关联模型OrderItem保存数据时报错(该模型主键获取到的是Order模型id主键数据,非定义的no字段的数据)
操作一:删除设置的覆盖主键
protected $primaryKey = 'no';
设置关联如下,提交数据正常
public function items() {
return $this->hasMany(OrderItem::class,'order_id','no');
}
无奈,重读 https://learnku.com/docs/laravel/5.6/eloquent/1403#eloquent-model-conventions Eloquent 模型约定--主键 部分
使用非递增或者非数字的主键,则必须在模型上设置 public $incrementing = false 。
最后在原基础上加一句,解决问题。
protected $primaryKey = 'no';
public $incrementing = false;//加上这句
知识点:
非递增或者非数字的主键,需要加上
public $incrementing = false;
非整数主键,需要加上
protected $keyType = string;
网友评论