美文网首页
自定义主键后,需要注意的地方

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

作者: IT宝哥哥 | 来源:发表于2019-04-11 11:36 被阅读0次

    订单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;
    

    相关文章

      网友评论

          本文标题:自定义主键后,需要注意的地方

          本文链接:https://www.haomeiwen.com/subject/gtftwqtx.html