-2
I have a problem in Laravel where I have two related tables.
I have a form for Tabela1 (Chapter) and a form for table 2 (documentation)
I can add "Chapters" without interfering with the other table. But when I try to add data in the document form gives error and says that the table parameter chapter is empty.
I have the following controller :
public function insert(Request $request){
$tabela = new capitulo();
$tabela->capitulo = $request->capitulo;
$itens = capitulo::where('capitulo', '=', $request->capitulo)->count();
if($itens > 0){
echo "<script language='javascript'> window.alert('Já existe um capitulo com esse nome!') </script>";
return view('gestao-documental');
//return redirect()->route('GestaoDocumental');
}
$tabela->save();
return redirect()->route('documentacao.index');
}
public function insert2(Request $request){
//--------------------------------------------------
$doc = new documentacao();
$doc->id_capitulo = $request->id_capitulo;
$doc->nome_ficheiro = $request->nome_ficheiro;
if ($request->file('ficheiro')->isValid()){
$request->file('ficheiro')->store('ficheiro/documentacao');
}
//$doc->ficheiro = $request->file(ficheiro);
$doc->versao = $request->versao;
$doc->data_ultima_alteracao = $request->versao;
//dd($request->file('ficheiro')->isValid());
$doc = documentacao::where('nome_ficheiro', '=', $request->nome_ficheiro)->count();
if($doc > 0){
echo "<script language='javascript'> window.alert('Já existe um capitulo com esse nome!') </script>";
return view('gestao-documental');
//return redirect()->route('GestaoDocumental');
}
$doc->save();
return redirect()->route('GestaoDocumental');
}
EDIT:
At this time the error that occurs is SQLSTATE[23000]: Integrity Constraint Violation: 1048 Column 'chapter' cannot be null (SQL: Insert into capitulos
(capitulo
) values (?))
The table "main"".
When inserting into documents requires the title table to be filled in
MODEL chapter:
class capitulo extends Model
{
public $timestamps = false;
use HasFactory;
public function documentos() {
return $this->hasMany(documentacao::class,'id_capitulo');
}
}
MODEL Documentacao:
class documentacao extends Model
{
public $timestamps = false;
use HasFactory;
}
VIEW:
<form id="form-perfil" method="POST" action="{{route('documentacao.insert2')}}" enctype="multipart/form-data">
@csrf
<div class="modal-body">
<div class="form-group">
<label >Capitulo Associado</label>
<select class="form-select" aria-label="Default select example">
<option selected>Escolher Capitulo</option>
@foreach($capitulos as $cap)
<option class="form-control" id="id_capitulo" name="id_capitulo"> {{$cap->capitulo}}</option>
@endforeach
</select>
<input value="" type="text" class="form-control" id="id_capitulo" name="id_capitulo" placeholder="Capitulo">
</div>
<div class="form-group">
<label >Nome Ficheiro</label>
<input value="" type="text" class="form-control" id="nome_ficheiro" name="nome_ficheiro" placeholder="Nome Ficheiro">
</div>
<div class="form-group">
<label >Adicionar Ficheiro</label>
<input type="file" class="form-control" name="ficheiro" id="ficheiro" />
</div>
<div class="form-group">
<label >Versão</label>
<input value="" min="1" value="1" step="0.1" type="number" class="form-control" id="versao" name="versao" placeholder="Versão">
</div>
<div class="form-group">
<label >Data alteração</label>
<input type="date" class="form-control" id="data_ultima_alteracao" name="data_ultima_alteracao">
</div>
</div>
<div class="modal-footer">
<button type="button" id="btn-fechar" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
<button type="submit" name="btn-salvar-perfil" id="btn-salvar-perfil" class="btn btn-primary">Guardar</button>
</div>
</form>
Could you explain why here
$doc = documentacao::where('nome_ficheiro', '=', $request->nome_ficheiro)->count();
you overwrite$doc
by a numerical value and which has not yet saved the modifications?– Augusto Vasques