Laravel- PHP请求未正确设置数据库值

时间:2018-10-24 14:58:58

标签: php laravel request database-update

我有一个Laravel应用程序,并且在其中一个页面上,我希望允许用户能够通过在几个文本框中输入/更改数据来更新数据库中的某些值。

这些HTML文本框的(change)属性调用的Angular函数是:

updatePreferredAddresseeDetails($event, payer) {
    console.log("updatePreferredAddresseeDetails() called ");

    const contact = payer['contacts'][$event.currentTarget.selectedIndex]; 

    payer.loading = true;
    payer.originalAddresseeName = payer.addresseename;
    payer.originalAddresseeNamePdf = payer.addresseenamepdf;

    payer.ADDRESSEENAME = $event.contactPreferredName;
    payer.ADDRESSEENAMEPDF = $event.contactPreferredAddresseeName;

    this.provService.updatePreferredAddresseeDetails(payer).subscribe(
        (response:any) => {
            payer.addresseename = response.addresseename;
            payer.addresseenamepdf = response.addresseenamepdf;

            const message = new Message();
            message.type = MessageType.SUCCESS;
            message.message = 'Preferred Addressee details have been updated. ';
            this.messagingService.emitMessage(message);

            payer.loading = false;
        },
        (error:any) => {
            //reset the names back to what they were originally because saving failed
            payer.addresseename = payer.originalAddresseeName;
            const message = new Message();
            message.type = MessageType.ERROR;
            message.message = error.message || 'There was a problem updaing the preferred addressee details. If the problem persists, please contact us.';
            this.messagingService.emitMessage(message);

            payer.loading = false;
        }
    );
}

上述Angular函数调用的PHP函数应该是在数据库中设置值:

public function updatePreferredAddresseeDetails(Request $request)
{
    try
    {
        DB::beginTransaction();

        $transactionContactId = $request->input('transactionContactId');
        $transactionItemId = $request->input('transactionItemId');

        if ($transactionItem = transactionItem::find($transactionItemId))
        {
            $transaction = $transactionItem->transaction;

            if (User::canAccessTransaction( auth()->user()->user, $transaction))
            {
                $account = Account::find($transaction->accountId);
                $account->savePropertyValueByPropertyTag('ADDRESSEENAME', $request->input('contactPreferredName'));
                $account->savePropertyValueByPropertyTag('ADDRESSEENAMEPDF', $request->input('contactPreferredAddresseeName'));

                $account->save();

                DB::commit();

                return response()->json([
                    'success' => true,
                    'addresseeName' => $account->ADDRESSEENAME,
                    'addresseeNamePdf' => $account->ADDRESSEENAMEPDF,
                ]);
            }
            else
            {
                return response()->json([
                    'success' => false,
                ]);
            }

            dd("transactionItem: ", $transactionItem);
        }
        else
        {
            dd("transactionItem could not be found ");
        }
    }
    catch(Exception $e)
    {
        $message = $e->getMessage();
        if (empty($message))
        {
            $message = "Preferred addressee details could not be updated. ";
        }

        DB::rollback();

        return response()->json([
            'error' => true,
            'message' => $message
        ], 500);
    }
}

但是,当我在其中一个文本框中输入新值/更新现有值,然后在其中跳出标签时,我可以在浏览器控制台中看到Angular函数已被调用,而该函数又调用了PHP功能-但是在控制台的“网络”->“预览”选项卡中,我看到了输出:

  

{成功:true,addresseeName:null,addresseeNamePdf:null}

     

addresseeName:空

     

addresseeNamePdf:空

     

成功:是

因此由于某种原因,似乎这些值实际上并未在数据库中进行更新。为什么是这样?我究竟做错了什么?如何确保从该函数正确更新数据库值?

修改

好像@Devon对使用的功能的评论可能是正确的...我看了user.php文件(定义{{​​1}}的地方),还有另一个功能:{ {1}},我想可能是我想要的那个。定义为:

canAccessTransaction()

因此我将userCanEditAccount()函数中的该部分更改为:

private static function userCanEditAccount($userId, $accountId)
{
    return Account::canUserEditAccount( $userId, $accountId );
}

但是,当页面现在加载时,在我完全与之交互之前,我在控制台中看到一条错误消息:

  

解析错误:语法错误,意外的';'

在线

updatePreferredAddresseeDetails()

但是我很确定if(User::userCanEditAccount( $request->userId, $request->accountId) { $account = Account::find($request->accountId); $account->savePropertyValueByPropertyTag('ADDRESSEENAME', $request->input('contactPreferredName')); $account->savePropertyValueByPropertyTag('ADDRESSEENAMEPDF', $request->input('contactPreferredAddresseeName')); $account->save(); dd("request: ", $request->all()); DB::commit(); return response()->json([ 'success' => true, 'addresseeName' => $account->ADDRESSEENAME, 'addresseeNamePdf' => $account->ADDRESSEENAMEPDF, ]); } else { return response()->json([ 'success' => false, ]); } 应该在那儿-还有什么可能导致这种情况?

0 个答案:

没有答案