自定义主键后,需要注意的地方 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

[自定义主键后,需要注意的地方 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区]

订单Order模型覆盖主键后

protected $primaryKey = 'no';

关联模型OrderItem保存数据时报错(该模型主键获取到的是Order模型id主键数据,非定义的no字段的数据)

操作一:删除设置的覆盖主键

protected $primaryKey = 'no';

设置关联如下,提交数据正常

public function items() {
   return $this->hasMany(OrderItem::class,'order_id','no');
 }

无奈,重读 https://laravel-china.org/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;

Original url: Access

Created at: 2018-10-10 18:53:46

Category: default

Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论