违反完整性约束Laravel 5.8

时间:2019-07-11 13:57:59

标签: laravel eloquent

我有一个“ recurring_payments”表

Schema::create('recurring_payments', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('user_id');
            $table->string('card_id');
            $table->string('day');
            $table->integer('amount');
            $table->timestamps();
        });

我有一张“卡”表

Schema::create('cards', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('user_id');
            $table->string('token');
            $table->string('last4');
            $table->timestamps();
            $table->softDeletes();
        });

“ recurring_payment”和“ card”之间存在“属于”关系

class RecurringPayment extends Model
{
    protected $guarded = [];

    public function card()
    {
        return $this->belongsTo(Card::class, 'token');
    }
}

当我尝试存储定期付款

class Card extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'user_id',
        'token',
        'last4',
    ];

    protected $hidden = [
        'user_id',
        'token',
        'created_at',
        'updated_at',
    ];
...

public function storeRecurringPayment($payment, $user)
    {
        $attributes = [
            'user_id' => $user,
            'card_id' => $payment->source['id'],
            'day' => Carbon::now()->day()->addMonths(1)->format('d'),
            'amount' => $payment->amount
        ];
// dd($attributes);
        return $this->recurringPayment()->create($attributes);
    }

    public function recurringPayment()
    {
        return $this->hasOne(RecurringPayment::class);
    }
...
}

它不会填充'card_id',它抱怨'card_id'不能为空,这是我想要的,到目前为止,但是'card_id'已填充,这是$ attributes数组死亡并转储了在传递给“返回$ this-> recurringPayment()-> create($ attributes);”之前

array:4 [▼
  "user_id" => 3
  "card_id" => "src_4zcdnrruvgxetpkgxocg6hhk5m"
  "day" => "30"
  "amount" => 10
]

我在“ recurring_payment”中指定要使用“令牌”作为外键,而不是默认的“ card_id”,但仍然出现此错误

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'card_id' cannot be null (SQL: insert into 'recurring_payments' ('user_id', 'card_id', 'day', 'amount', 'updated_at', 'created_at') values (3, ?, 30, 10, 2019-07-11 13:53:08, 2019-07-11 13:53:08))

谁能看到我犯的错误?

0 个答案:

没有答案
相关问题