我的表中定义的主键是UUID。当我定义多对多关系并尝试同步相关记录时,我得到错误,显示:
insert into "productoption" ("optionid", "productid") values (d359a612-5169-4c0d-a7d7-9d1c4f8dda9f, 732a9cb3-d14f-4343-9d0c-3794b58f2f6f))
正如您所看到的那样,引用的UUID值不会引发PostgreSQL的异常。
在我的模特中,我有:
public $incrementing = false;
这有助于暗示Eloquent模型键不是整数,必须以不同方式处理。由于数据透视表没有自己的模型,我不知道如何告诉Eloquent用于连接表的密钥不是整数。
解决问题的最佳方法是什么?
我用:
答案 0 :(得分:0)
在模型中声明关系方法时,您可以尝试以下内容:
// Product.php
protected $primaryKey = 'product_uuid';
public function options()
{
return $this
->belongsToMany('App\Option', 'product_option', 'product_uuid', 'option_uuid');
}
// Option.php
protected $primaryKey = 'option_uuid';
public function products()
{
return $this
->belongsToMany('App\Product', 'product_option', 'option_uuid', 'product_uuid');
}
区分两个表中的主要密钥名称,使用(product_uuid
和option_uuid
),否则您将陷入更多麻烦。