如何在不出错的情况下将数组插入数据库:数组到字符串的转换



在 m 应用程序中,我有一个包含数据的表单,旨在将数据插入 2 个表中:p ayers 和 配偶 和付款人有很多配偶。在我的付款人控制器中,我有

public function store(CreatePayerRequest $request)
{ 
$input = $request->all();
$payer = $this->payerRepository->create($input);
{

我有

dd($request->all())

并得到以下结果,显示我的数组从我的输入表单成功传递。

array:34 [▼
"_token" => "LDdsaesoaRlKmM0URHVxQqyiJHdrPhLz3lmYQs6V"
"added_on" => "2020-06-28 11:07:39"
"user_id" => array:2 [▼
0 => "Auth::user()->id"
1 => "Auth::user()->id"
]
"ass_code" => "508063"
"title" => "Mr"
"surname" => "PLC"
"firstname" => "ZENITH"
"othernames" => "A,"
"dob" => "2020-06-28 12:08:59"
"address" => "43"
"street" => "Old School"
"town" => "Umuguma"
"lga" => "Okigwe"
"state" => "Imo"
"nationality" => "Nigerian"
"occupation" => "Civil Servant"
"vocation" => "Employment"
"phone" => "8035514494"
"email" => "ugo@yahoo.com"
"income_status" => "Yes"
"allowance_status" => "No"
"acc_status" => "1"
"assess_status" => "0"
"approve_status" => "0"
"payment_status" => "0"
"authorize_status" => "0"
"marital_stat" => "Married"
"spouse_name" => array:2 [▼
0 => "Tony"
1 => "Nkechi"
]
"spouse_dob" => array:2 [▶]
"spouse_emplbiz_add" => array:2 [▼
0 => "nA"
1 => "nA"
]
"spose_income" => array:2 [▼
0 => "50000"
1 => "50000"
]
"child_status" => "Yes"
"vehicle_status" => "Yes"
"assets_status" => "Nigeria"
]

我的问题是,当我发送带有配偶数组的表单时,它给了我错误:

错误异常 数组到字符串的转换

我尝试了各种代码,例如

代码 1

$payer->spouses()->create();

代码 2

$spouses = Spouse::find($payer->id);
foreach($request->spouses as $spouse){
$payer->spouses()->create([
'user_id' => Auth::user()->id,
'spouse_occupation'=>NA,
'spouse_name'=>$spouse_name,
'spouse_dob'=>$spouse_dob,
'spouse_emplbiz_add'=>$spouse_emplbiz_add]);

代码 3:

$spouses = new Spouse();
$spouses->user_id = Auth::user()->id;
$spouses->payer_id = $payer->id;
$spouses->spouse_occupation='NA';
$spouses->spouse_name = $request->input('spouse_name');
$spouses->spouse_dob = $request->input('spouse_dob');
$spouses->spouse_emplbiz_add = $request->input('spouse_emplbiz_add');
$spouses->spose_income = $request->input('spose_income');
$spouses->save();

而且我不断收到同样的错误。

谁能告诉我如何在我插入付款人的同时将数组中的配偶详细信息插入我的数据库中。

在我遵循的教程中,导师发送了以下代码,但它对我不起作用:

foreach($request->spouses as $spouse){
payer->spouses()->(['name'='$spouse'])

我认为它因为他只有一个输入字段。但就我而言,我最多有 4 个。

我的配偶输入是一个带有以下代码的活线组件

@foreach($spouses as $spouse)
<div class="col-md-10 d-flex">

{!! Form::hidden('user_id[]', 'Auth::user()->id',array(
'class' => 'form-control col-3',
'id' => 'user_id[]',
))  !!}
{!! Form::text('spouse_name[]', '',array(
'class' => 'form-control col-3',
'id' => 'spouse_name[]',
'placeholder' => 'Spouse name',
))  !!}
{!! Form::text('spouse_dob[]', '',array(
'class' => 'form-control col-3',
'id' => 'spouse_dob[]',
'placeholder' => 'Spouse Age',
))  !!}
{!! Form::text('spouse_emplbiz_add[]', '',array(
'class' => 'form-control col-3',
'id' => 'spouse_emplbiz_add[]',
'placeholder' => 'Work Address',
))  !!}
{!! Form::text('spose_income[]', '',array(
'class' => 'form-control col-3',
'id' => 'spose_income[]',
'placeholder' => 'Gross Income',
)) !!}
<span class="btn btn-default fa fa-times text-danger padding:2" 
wire:click="remove({{$loop->index}})"></span>        
</div>
@endforeach

您的错误准确地描述了您的问题。您正在尝试保存数组,因此收到此错误。

$spouses->spouse_name = $request->input('spouse_name');
$spouses->spouse_dob = $request->input('spouse_dob');
$spouses->spouse_emplbiz_add = $request->input('spouse_emplbiz_add');
$spouses->spose_income = $request->input('spose_income');

所有这些数据都是数组。

"spouse_name" => array:2 [▼
0 => "Tony"
1 => "Nkechi"
]
"spouse_dob" => array:2 [▶]
"spouse_emplbiz_add" => array:2 [▼
0 => "nA"
1 => "nA"
]
"spose_income" => array:2 [▼
0 => "50000"
1 => "50000"
]

如果表中这些列的类型是JSON,则应像这样保存它。

$spouses->spouse_name = json_encode($request->input('spouse_name'));
$spouses->spouse_dob = json_encode($request->input('spouse_dob'));
$spouses->spouse_emplbiz_add = json_encode($request->input('spouse_emplbiz_add'));
$spouses->spose_income = json_encode($request->input('spose_income'));

您可以为付款人和配偶模型尝试这样的事情....

$payer = new Payer();
$payer->property =  $request->property;
$payer->save();
if(count($request->spouse_name) > 0){
for($i = 0; $i < count($request->spouse_name); $i++){
$object = new Spouse();
$object->payer_id = $payer->id
$object->spouse_name= $request->spouse_name[$i];
$object->save();
} 
}

最新更新