Laravel — PHP-запрос неправильно устанавливает значения базы данных

У меня есть приложение Laravel, и на одной из страниц я хочу позволить пользователю иметь возможность обновлять некоторые значения в базе данных, вводя / изменяя данные в нескольких текстовых полях.

Угловая функция, вызываемая (change) Атрибут этих текстовых полей HTML:

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;
}
);
}

Функция PHP, вызываемая вышеупомянутой функцией Angular, которая должна устанавливать значения в базе данных:

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 — но во вкладке Network-> Preview консоли я вижу вывод:

{success: true, addresseeName: null, addresseeNamePdf: null}

имя_адреса: ноль

addresseeNamePdf: null

успех: правда

поэтому по какой-то причине кажется, что эти значения на самом деле не обновляются в базе данных. Почему это? Что я делаю неправильно? Как я могу убедиться, что значения базы данных корректно обновляются с помощью этой функции?

редактировать

Похоже, что @Devon, возможно, был прав с его комментарием об используемой функции … Я посмотрел файл user.php (где 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,
]);
}

Но когда страница загружается сейчас, прежде чем я вообще с ней взаимодействую, в консоли появляется сообщение об ошибке:

Ошибка разбора: синтаксическая ошибка, неожиданный ‘;’

на линии

$account = Account::find($request->accountId);

но я уверен, что ; должно быть там — что еще может быть причиной этого?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]