因此,我想将整个数组的值插入到特定的列中,但我不知道具体该怎么做。我所尝试的一切都给了我“数组到字符串转换”错误。
下面是我的控制器代码:
public function processInternationaTransfer(Request $request)
{
$international_info = Validator::make($request->all(),
[
'beneficiary_name' => 'required',
'beneficiary_acc_num' => 'required|numeric',
'beneficiary_bank' => 'required',
'beneficiary_swiftcode' => 'required',
'routing_transit_no' => 'required|numeric',
'currency' => 'required',
'amount' => 'required|numeric',
'note' => 'required',
]
);
if($international_info->fails())
{
return response()->json(['errors'=>$international_info->errors()->all()]);
}
$info = $international_info->validated();
$balance = $info['currency'].'_balance';
if(user_details()->$balance < InternationalAmount($info['amount']))
{
return response()->json(['insufficient_amount'=>'Insufficient Amount']);
}
else
{
TransactionLog::create([
'username' => user()->username,
'type' => 'Exchange',
'cred_deb' => 'Debit',
'time'=> Carbon::now('Africa/Lagos')->format('l, d F, Y g:i A'),
'status' => 2,
'amount'=>InternationalAmount($info['amount']),
'currency'=>$info['currency'],
'reason' => $info['note'],
'inter_details' => $info,
'transaction_id' => rand(100000000, 999999999),
]);
return response()->json(['success'=>'Transaction Processed, Awaiting Confirmation']);
}
}
如何将该值数组插入到inter_details列中?
我试着像上面那样插入它,但它给了我“数组到字符串转换”的错误。我想在插入后能够取回它。
2条答案
按热度按时间1wnzp6jl1#
首先,您需要确保
inter_details
可以接受许多字符,最好的方法是在迁移中使用json()
然后向
TransactionLogs
模型添加强制转换通过这种方式,当你从数据库中获取inter_details时,你可以将其作为数组来访问,而不需要使用
json_encode()
和json_decode()
。如果你想以其他类型来访问casts
,文档中有更多的内容Eloquent:赋值函数和强制转换-属性强制转换
u5i3ibmn2#
要将值数组插入到特定列中,需要使用DB facade的insert方法。insert方法将值数组作为其第一个参数,将表名作为其第二个参数。
例如,如果要将值数组插入到inter_details列中,可以执行以下操作:
json_encode()函数用于将数组转换为JSON字符串,然后将其存储在数据库中。
要从数据库中提取值数组,可以使用DB facade的select方法。例如:
json_decode()函数用于将JSON字符串转换回数组,该函数的第二个参数设置为true,它告诉函数返回一个关联数组而不是对象。
现在,您已经拥有了存储在$inter_details变量中的值数组,您可以根据需要使用它。