Preciso de uma ajuda o foreach está salvando apenas um dos dados do formulário sendo que ele traz 2 registro da tabela de acordo com id do usuário
--Controller Lista os dados do usuário
public function listardados(){
$matricula = Matricula::where('user_id', Auth::id())->get();
//dd($matricula);
return view('dashboard.renovacao.teste', compact( 'matricula'));
}
-- Controller Salva
public function store(RenovacaoRequest $request){
$user = Auth()->user();
$dados = $request->all();
$renovacao = Renovacao::create($dados);
return view('dashboard.renovacao.confirmacao', compact ('renovacao'));
}
-- View form
@extends('layouts.app') @section('content')
<div class="container">
<div class="row">
<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()}}
<right>
<a>**Dados Cadastrados**</a>
</right>
<div class="row"></div>
<div class="row"></div>
<div class="row">
@foreach($matricula as $matric)
<div class="row">
<div class="col s6 m6">
<div class="input-field {{$errors->has('user_id') ? 'has-error' : ''}} ">
<label for="produto">Nome do Pai:</label>
<input type="text" class="form-control" name="nomerespo" value="{{ $matric->nomedopai }}">
</div>
</div>
<div class="col s6 m6">
<div class="input-field {{$errors->has('user_id') ? 'has-error' : ''}} ">
<label for="produto">Nome do Aluno(a):</label>
<input type="text" class="form-control" name="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>
<button type="submit" class="btn orange darken-4 btn-info right">Confirmar
<i class="material-icons left">save</i>
</button>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
@endsection
Me passaram essa solução em outro fórum só que quando faço um dd($dados); ele retorna nada e só recarrega a pagina
As tags input no seu formulário estão com um nome fixo dentro de um @foreach isso faz que ao enviar um formulário com várias entradas apenas uma (de cada nome) seja realmente enviada.
De:
<input type="text" class="form-control" name="nomerespo" value="{{ $matric->nomedopai }}">
<input type="text" class="form-control" name="nomealuno" value="{{ $matric->nomealuno }}">
para:
<input type="text" class="form-control" name="nomerespo[]" value="{{ $matric->nomedopai }}">
<input type="text" class="form-control" name="nomealuno[]" value="{{ $matric->nomealuno }}">
( Repare que os atributos name das tags foram alterados para um array, assim todos os campos serão enviados para o seu Controller, Caso a relação com Renovacao com usuário tenha sido definida e a propriedade $guarded ou $fillable estejam definidas em Renovacao poderá salvar o conteúdo com algo da forma: $user->renovacoes()->saveMany($dados) e o Laravel tratará da relação de chaves estrangeiras para você ).
No meu codigo está assim atualmente
//Controller
public function store(RenovacaoRequest $request){
$user = Auth()->user();
$dados = $request->all();
$renovacao = Renovacao::create($dados);
$user->renovacao()->saveMany($dados);
return view('dashboard.renovacao.confirmacao', compact ('renovacao'));
}