Jump to content

PHP : Inserir dados em tabelas relacionadas


Recommended Posts

Posted (edited)

Estou com um problema no Laravel onde tenho duas tabelas relacionadas.

Tenho um formulario para a tabela1 (Capitulo) e um formulario para a tabela2 (documentacao)

Consigo adicionar "Capitulos" sem interferir com a outra tabela. Mas quando tento adicionar dados no formulario documentacao dá erro e diz que o campo (capitulo) da tabela capitulo está vazio.

Tenho o seguinte 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');
}


Neste momento o erro que ocorre é SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'capitulo' cannot be null (SQL: insert into `capitulos` (`capitulo`) values (?))

A tabela "principal" ´o titulo e dentro do titulo existem varios "documentos". 

Ao inserir nos documentos obriga que a tabela titulo esteja preenchida 

 

Obrigado a todos que me possam elucidar nesta situação. 
 

 

Edited by klasss
Posted

Pelo que percebi estas à procura de um capítulo que não existe.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Posted (edited)

Já sei que parvoice estou a fazer.. 

 

										<option selected>Escolher Capitulo</option>
                                            @foreach($capitulos as $cap)
                                            <option class="form-control" id="id_capitulo" name="id_capitulo"> {{$cap->capitulo}}</option>
                                            @endforeach 
                                            </select>


Neste campo estou a pedir para selecionar o capitulo e a tentar guardar o ID. 

Tinha isto apontado e esqueci-me de tentar solucionar. 

Existe alguma forma de ir buscar o ID (para guardar na BD) e o nome para o utilizador selecionar ? 
Além desse problema, tenho um outro relativamente  ao foreach, onde este campo não é enviado pelo form. 

Edited by klasss

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.