尝试使用belongsToMany()解决问题,其中我的pk是一个字符串(类似于uuid)
简单产品< - product_productgroups - >产品组
但产品的主要产品是apk varchar(50)
当我使用整数值时,一切都很好,但如果我使用字符串,则在搜索数据透视表时会将它们转换为0:
$product = App\Products::with('productgroups')->find('B00AE38KM');
"select * from `products` where `products`.`apk` = ? limit 1"
数组:1 [▼ 0 => “B00AE38KM” ]
“选择productgroups
。*,product_productgroup
。product_apk
为pivot_product_apk
,product_productgroup
。productgroup_id
为pivot_productgroup_id
来自{ {1}} productgroups
= product_productgroup
。productgroups
其中id
。product_productgroup
位于{?1}} {1}}内部加入productgroup_id
)“
数组:1 [▼ 0 => 0 ]
我的产品型号有:
product_productgroup
TIA!
答案 0 :(得分:0)
解决 - 与关系无关,而是与模型有关。
看看Illuminate \ Database \ Eloquent \ Model&通过getAttribute()函数跟踪它调用getCasts()的位置。
如果模型$ incrementing为真,你会看到&这个字段是primaryKey,它被强制转换为int;
解决方案:
位于模型的顶部,
protected $incrementing = false;
答案 1 :(得分:-1)
尝试设置模型的
protected $keyType = 'string';