Erro ao salvar dados de um array - php - laravel

Estou com uma dúvida como posso salvar os dados que vem de um array do form, eu tenho 2 cadastros que vem de outra tabela ele só está salvando 1 registro e deixando outro de lado, segue código abaixo:

Controller

// autentifica o user logado e joga os dados cadastrado dele no form 
public function listardados()
{         
    $matricula = Matricula::where('user_id', Auth::id())->get();
    return view('dashboard.renovacao.teste', compact( 'matricula'));
}
// function que salva a renovacao
public function store(RenovacaoRequest $request)
{	
    $user = Auth()->user();
    $dados = $request->get('rematricula');
	
// aqui a gente já pega a matricula do usuario logado
    $matricula = Matricula::where("user_id","=",$user->id)->first();		
// aqui a gente cria a renovação com os dados do request
    $renovacao = new Renovacao($dados[0]);
	
//faz a associação entre um e o outro
    $renovacao->matricula()->associate($matricula);
	
// manda a renovação pro banco
    $renovacao->save();
	
// define a renovação da matricula
    $matricula->renovacao_id = $renovacao->id;
	
// atualiza a matricula no banco
    $matricula->save();
//dd($renovacao);
    return view('dashboard.renovacao.confirmacao', compact ('renovacao'));
}

View Form

<form class="form-horizontal " id="regForm" action="{{route('renovacao.store')}}" method="POST">
<div class="card-panel white">
	<h4 class="center">Solicitar Renovação</h4>
	<div class="row"></div>
	{{ csrf_field()}}

	<div class="row">
		@if($matricula->count())
			<right>
				<a>**Dados Cadastrados**</a>
			</right>
			<div class="row"></div>
			<div class="row"></div>
			@foreach($matricula as $matric)

				<div class="row">
					<div class="col s6 m6">
					<div class="input-field {{$errors->has('') ? 'has-error' : ''}} ">
						<label for="produto">Nome do Pai:</label>
						<input type="text" class="form-control" name="rematricula[{{ $loop->index}}][nomerespo]" value="{{ $matric->nomedopai }}">
						
					</div>
					</div>

					<div class="col s6 m6">
					<div class="input-field {{$errors->has('') ? 'has-error' : ''}} ">
						<label for="produto">Nome do Aluno(a):</label>
						<input type="text" class="form-control" name="rematricula[{{ $loop->index}}][nomealuno]" value="{{ $matric->nomealuno }}">
					</div>
					</div>

				</div>

			@endforeach

			<div class = "row">
				<div class="col s12">

					<a title="Voltar Para Página Principal" class="btn orange darken-4 btn-info left " href="/admin">Voltar
						<i class="material-icons left">arrow_back_ios</i>
					</a>

					@if(empty($matric->renovacao_id))
					<button type="submit" class="btn orange darken-4 btn-info right">Confirmar
						<i class="material-icons left">save</i>
					</button>
					@else
					<button disabled type="submit" class="btn orange darken-4 btn-info right">Inscrito
						<i class="material-icons left">save</i>
					</button>
					@endif
				</div>
			</div>
		@else
			<div class="row"></div>
			<div class="row"></div>
			<p> Desculpe! Página Indisponivel, Você não tem cadastro </p>
			<div class="row"></div>
			<div class="row"></div>
			<a title="Voltar Para Página Principal" class="btn orange darken-4 btn-info left " href="/admin">Voltar
						<i class="material-icons left">arrow_back_ios</i>
			</a>
		@endif

	</div>
</div>
</form>

– Migration renovacao_matricula

<?php

  use Illuminate\Support\Facades\Schema;
  use Illuminate\Database\Schema\Blueprint;
  use Illuminate\Database\Migrations\Migration;

 class CreateRelacionamentoRenovacaoMatriculaTable extends Migration
  {

public function up()
{
    Schema::table('renovacao', function (Blueprint $table) {
         $table->integer('matricula_id')->unsigned();
         $table->foreign('matricula_id')->references('id')->on('matricula');
    });
	

}

   public function down()
  {
        Schema::table('renovacao', function (Blueprint $table) {
            Schema::dropIfExists('renovacao');
       });
  }
}

– Migration matricula_ renovacao

<?php

  use Illuminate\Support\Facades\Schema;
  use Illuminate\Database\Schema\Blueprint;
   use Illuminate\Database\Migrations\Migration;

 class CreateRelacionamentoMatriculaRenovacaoTable extends Migration
{

public function up()
{
    Schema::table('matricula', function (Blueprint $table) {
        $table->integer('renovacao_id')->nullable();
        $table->foreign('renovacao_id')->references('id')->on('renovacao');
    });
	
}

   public function down()
    {
         Schema::table('matricula', function (Blueprint $table) {
              Schema::dropIfExists('matricula');
       });
   }
}

– Migration Renovacao

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateRenovacaoTable extends Migration
{

public function up()
{
    Schema::create('renovacao', function (Blueprint $table) {
        $table->increments('id');
        $table->string('nomerespo');
        $table->string('nomealuno');
        $table->string('status')->default('pendente');
        $table->timestamps();
    });
  }


    public function down()
    {
         Schema::dropIfExists('renovacao');
    }
}

– Migration Matricula

<?php

  use Illuminate\Support\Facades\Schema;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Database\Migrations\Migration;

  class CreateMatriculasTable extends Migration{
     public function up(){

      Schema::create('matricula', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->string('nomealuno');
        $table->string('endereço');
        $table->string('numero');
        $table->string('cep');
        $table->string('bairro');
        $table->string('nomedopai');
       
        $table->timestamps();
            
    });
   }


   public function down()
    {
       Schema::dropIfExists('matriculas');
   }
}

Você poderia dividir em partes o seu problema, do jeito que estou vendo ai falta informações e fica complicado responder, em um código todo bagunçado, sem endentação, sem lógica no processo, sem os modelos (Eloquent) na pergunta, é complicado responder.

Tenho experiência em Laravel, mas, o seu código precisa melhorar a organização, que é um fator muito, mas, muito importante

Ele está por assim porque fiz diversos teste no controller eu não deixo o código final bagunçado, o problema que estou no momento é na hora de salvar eu passando dd($renovacao); ele só traz um dos dados do form mas tem 2, pois eu configurei para caso tenha mais cadastro o form duplicava

é dificil saber o que sua tela faz, e no RenovacaoRequest $request é que vem todos os dados é só pegar ai se você está enviando da sua tela que é complicado eu dizer …

Alterei o post colocando as migrations

Bom tenho a seguinte tela quando vai criar a renovação ele verifica o user_id do usuário e se tiver matricula ele joga no form a quantidade de matricula cadastrada se tiver 2 vai aparecer 2 formulário com nome do pai e nome do aluno

Print: http://prntscr.com/m1hq7q

Resultado com dd - Aqui ele só está salvando apenas uma renovação e não as 2: http://prntscr.com/m1hqti

$dados[0] é uma posição então realmente ele só vai gravar uma vez, se você quiser salvar mais vezes tem que usar $request->all() e fazer um foreach no seu store do controller, basicamente é isso.

Poise eu tentei passar um foreach dessa maneira, quando vou ver o resultado ele informa que matricula_id não foi capturado, bom de inicio esse foreach estava salvando antes de implementar o cadastro do campo matricula_id na tabela renovação…

    foreach ($dados as $key => $dado) {

		Renovacao::create($dado);
     }

Qual seria a forma correta ?

Precisa passar os valores corretamente. Aí funciona

Você tem exemplo do foreach para pegar os dados sem escapar o matricula_ id ?

tenta

$matricula->fill(['renovacao_id' => $renovacao->id]);
$matricula->save();

Verifica tmb ase o $renovacao->id não esta vindo null

no seu model vc pode acrescentar a variável

protected $hidden = [
    'password', 'created_at', 'updated_at', 'deleted_at'
];

ai quando vc filtrar no dd ele ainda aparecer mas quando vc der um ->toArray() ele não mostrar

Não funcionou

Isso eu não entendi, em que model coloco ?

No model que vc quer esconder o campo de retorno exemplo

<?php

namespace App\Code\Store\Model;

use Illuminate\Database\Eloquent\Model;

class Store extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */

    protected $fillable = [
        'name', 
        'status',
        'country_or_region',
        'street_address',
        'street_address_2',
        'city',
        'state',
        'postcode',
        'phone_number',
        'user_id',
    ];

    protected $hidden = [
        'created_at', 
        'updated_at', 
        'deleted_at'
    ];
}

da um dd na $matricula e vê oque ele retorna

melhor ainda da um

dd($matricula->toArray());

Se não retornar nada é pq retornou nada e por isto ele não salva nada

Mesmo eu fazendo as alterações ele só está salvando 1 renovação bizarro
Dragon disse que tinha fazer o foreach mais o que eu tinha não está salvando agora não sei o que fazer se tem que passar 2 foreach