自定义主键后,需要注意的地方

订单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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值