【问题标题】:How to save array data from a request to database in Laravel?如何将数组数据从请求中保存到 Laravel 中的数据库?
【发布时间】:2021-02-15 21:07:12
【问题描述】:

我收到了来自 API 端点的数组请求并尝试保存到数据库,但它正在将所有数组请求正文保存到每个列表中。

下面是每个列的数组发布

s:284:"{"TransactionType":"Pay
Bill","TransID":"MBL51H83P1","TransTime":"20201603457857","TransAmount":"100","BusinessShortCode":"600000","BillRefNumber":"EDSJH90","InvoiceNumber":"1232","OrgAccountBalance":"500","MSISDN":"254710306000","FirstName":"D","MiddleName":"TANUI","LastName":"KIP"}";

Laravel 函数接收请求

$data = json_decode($request->getContent() );
            $mydata= serialize(json_encode($data));
            $trn = new MpesaTransaction;
            $trn->TransactionType = $mydata;
            $trn->TransID = $mydata;
            $trn->TransTime = $mydata;
            $trn->TransAmount = $mydata;
            $trn->BusinessShortCode = $mydata;
            $trn->BillRefNumber = $mydata;
            $trn->InvoiceNumber = $mydata;
            $trn->OrgAccountBalance = $mydata;
            $trn->MSISDN = $mydata;
            $trn->FirstName = $mydata;
            $trn->MiddleName = $mydata;
            $trn->LastName = $mydata;
            $trn->save();

现在如何将每个数组值保存到其各自的列?

【问题讨论】:

    标签: arrays json laravel


    【解决方案1】:

    如果您确定响应包含您表中的所有列,那么您可以简单地在模型上使用create 方法:

    $data = json_decode($request->getContent(), true);
    
    MpesaTransaction::unguarded(static function() use ($data) {
        MpesaTransaction::create($data);
    });
    

    否则,必须一一设置参数:

    $model = new MpesaTransaction;
    $model->TransactionType = $data['TransactionType'];
    // ........
    $model->save();
    

    【讨论】:

      【解决方案2】:

      您的代码错误。如果 $request->getContent() 是 json 那么你需要解码为数组。您可以使用我的代码进行测试。

      $data = json_decode($request->getContent(),true );
      $trn = new MpesaTransaction;
      $trn->TransactionType = $data['TransactionType'];
      $trn->TransID =  $data['TransID'];
      $trn->TransTime =  $data['TransTime'];
      $trn->TransAmount =  $data['TransAmount'];
      $trn->BusinessShortCode =  $data['BusinessShortCode'];
      $trn->BillRefNumber =  $data['BillRefNumber'];
      $trn->InvoiceNumber =  $data['InvoiceNumber'];
      $trn->OrgAccountBalance =  $data['OrgAccountBalance'];
      $trn->MSISDN =  $data['MSISDN'];
      $trn->FirstName =  $data['FirstName'];
      $trn->MiddleName =  $data['MiddleName'];
      $trn->LastName =  $data['LastName'];
      $trn->save();
      

      【讨论】:

        猜你喜欢
        • 2016-01-08
        • 1970-01-01
        • 2021-12-17
        • 2019-07-03
        • 1970-01-01
        • 2021-08-23
        • 2020-06-09
        • 2016-06-14
        • 2021-06-13
        相关资源
        最近更新 更多