簡體   English   中英

從 Laravel 中的 Json 響應保存到用戶數據庫

[英]Save to user database from a Json response in Laravel

我成功地在我的 Laravel 應用程序上實現了一個支付網關

但我從付款中得到了這個回應

    public function handleGatewayCallback()
    {
        $paymentDetails = Payant::getPaymentData();
        dd($paymentDetails);
    }

在此處輸入圖片說明

我想要的是將一些響應保存到用戶數據庫,但我無法實現這一點。 我試過這樣做

   public function handleGatewayCallback(Request $request)
    {
        $paymentDetails = Payant::getPaymentData();
      //  dd($paymentDetails);
        $user = User::find(Auth::id());
        $user->sub_paid_at = $request->paid_at;
        $user->role = $request->planObject['name'];
        $user->save();
    }

它返回了這個錯誤

SQLSTATE [23000]:完整性約束違規:1048列'sub_paid_at'不能為空(SQL:更新users設置sub_paid_at ?=, usersupdated_at =二○一九年十二月一十四日7點27分45秒,其中id = 3)

更新

這是我的用戶數據庫架構

   public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->enum('role', ['subscriber', 'admin', 'basic', 'couple', 'family'])->default('subscriber');
            $table->timestamp('email_verified_at')->nullable();
            $table->string('avatar')->nullable();
            $table->integer('no_of_logins')->default(0);
            $table->date('sub_paid_at')->nullable();
            $table->string('session_id')->nullable();
            $table->string('password')->nullable();
            $table->rememberToken();
            $table->timestamps();

        });
    }

我希望能夠從響應中更新用戶角色,所以我嘗試了這個

  $user->role = $request->plan_object['name']; 

但它返回錯誤

SQLSTATE [23000]:完整性約束違規:1048列'角色'不能為空(SQL:更新users設置role ?=, sub_paid_at = 1970-01-01 00:00:00, usersupdated_at = 2019年12月14日08 :40:46 其中id = 3)

將您的變量名稱從paid_at更改為paidAt

    $user->sub_paid_at = $request->paidAt;

但最好你改變格式

   $user->sub_paid_at = date("Y-m-d H:i:s",strtotime($request->paidAt));

這解決了我的問題

 $user = User::find(Auth::id());
$user->sub_paid_at = date("Y-m-d H:i:s",strtotime($paymentDetails['data']['paidAt']));
$user->role = $paymentDetails['data']['plan_object']['name'];
 $user->save();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM