Laravel Eloquent属于ToMany(),字符串pk转换为0

时间:2016-01-13 06:30:57

标签: laravel laravel-5 eloquent

尝试使用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_productgroupproduct_apkpivot_product_apkproduct_productgroupproductgroup_idpivot_productgroup_id来自{ {1}} productgroups = product_productgroupproductgroups其中idproduct_productgroup位于{?1}} {1}}内部加入productgroup_id )“

数组:1 [▼   0 => 0 ]

我的产品型号有:

product_productgroup

TIA!

2 个答案:

答案 0 :(得分:0)

解决 - 与关系无关,而是与模型有关。

看看Illuminate \ Database \ Eloquent \ Model&通过getAttribute()函数跟踪它调用getCasts()的位置。

如果模型$ incrementing为真,你会看到&这个字段是primaryKey,它被强制转换为int;

解决方案:

位于模型的顶部,

    protected $incrementing = false;

答案 1 :(得分:-1)

尝试设置模型的

protected $keyType = 'string';