2016-01-13 41 views
0

试图通过一个问题与belongsToMany()在我的PK是一个字符串(类似UUID)Laravel雄辩belongsToMany()的字符串PK转换为0

简单的产品<工作 - product_productgroups - > 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_apk as pivot_product_apkproduct_productgroupproductgroup_id as pivot_productgroup_id from productgroups inner join product_productgroup on productgroupsid = product_productgroup。其中product_productgroupproduct_apk在“

阵列:1 [▼ 0 => 0 ]

我的产品型号有:

public function productgroups() 
    { 
     return $this->belongsToMany('App\ProductGroups', 
      'product_productgroup', 
      'product_apk', 
      'productgroup_id'); 
    } 

TIA

回答

0

解决 - 无关(?)!关系,而是在型号上。

看看Illuminate \ Database \ Eloquent \ Model & t通过getAttribute()函数调用getCasts()。

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

解决方案:

在模型的顶部,

protected $incrementing = false;