laravel:如何在使用具有多对多关系的attach()时禁用时间戳

时间:2018-04-11 13:54:01

标签: php laravel

表:
礼物:身份证,姓名
用户:id,name
GiftUser:gift_id,user_id,count

在GiftUser模型中,我已经有了这一行

date        drawdate    msisdn        tickets play_type
2018-02-16  2018-02-16  3xxxxxxxxxxxx   1    On-Demand
2018-02-16  2018-02-16  3xxxxxxxxxxxx   1    On-Demand
2018-02-16  2018-02-16  3xxxxxxxxxxxx   1    Subscription
2018-02-16  2018-02-16  3xxxxxxxxxxxx   1    Subscription
2018-02-19  2018-02-19  3xxxxxxxxxxxx   1    On-Demand
2018-02-20  2018-02-20  3xxxxxxxxxxxx   1    On-Demand
2018-02-20  2018-02-20  3xxxxxxxxxxxx   1    Subscription
2018-02-20  2018-02-20  3xxxxxxxxxxxx   2    On-Demand

在迁移播种机中:

public $timestamps = false;

此foreach是添加gift_user记录。对于每件礼物,如果用户没有,请添加新记录。如果用户已有礼物,请计算+1。

但是在执行播种机时,它说

foreach ($all_gifts as $key => $gift) {
  $gift_user = GiftUser::where('gift_id', $gift['id'])->where('user_id', $user->id)->first();

  if(empty($gift_user)){
    $user->gifts()->attach($gift['id'], ['count' => 1]);
  }else{
    $user->gifts()->updateExistingPivot($gift, ['count' => ($gift_user->count+1)]);
  }
}

当两列created_at和updated_at存在时,没关系 但现在我不想要那两个专栏。

我猜,当使用attach()和updateExistingPivot()时,似乎没有使用GiftUser模型,对吧?如何解决?

1 个答案:

答案 0 :(得分:0)

出错了,所以我的答案不是解决方案,只是一个快速修复(可能)

尝试在模型中保护这些字段:

protected $guarded = ['created_at', 'updated_at'];