提问者:小点点

如何在数据库中插入数组而不出现错误:数组到字符串转换


在m应用程序,我有一个表单的数据意味着插入数据到两个表:付款人和配偶和付款人有许多配偶。 在我的PayerController中

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"
]

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

ErrorException数组到字符串的转换

我试过各种代码

代码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个。

我的配偶输入是一个livewire组件,代码如下

@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

共2个答案

匿名用户

你可以尝试像这样的付款人和配偶模式。。。。

    $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();

   } 
}

匿名用户

我不是laravel,但是你想要完成的事情看起来很简单。

使用spouse_name数组确定应该循环多少次。 使用索引将数据关系维护为行。

如果这是错的,那我就不明白你的问题了。

foreach ($request->input('spouse_name') as $index => $spouseName) {
    $spouses = new Spouse();
    $spouses->user_id = Auth::user()->id;
    $spouses->payer_id = $payer->id;
    $spouses->spouse_occupation = 'NA';
    $spouses->spouse_name = $spouseName;
    $spouses->spouse_dob = $request->input('spouse_dob')[$index];
    $spouses->spouse_emplbiz_add = $request->input('spouse_emplbiz_add')[$index];
    $spouses->spose_income = $request->input('spose_income')[$index];
    $spouses->save();
}