2015-03-21 13 views
5

Ho un semplice modello di articolo e un modello di utente.Laravel 5: Violazione del vincolo di integrità: 1452 Impossibile aggiungere o aggiornare una riga secondaria: un vincolo di chiave esterna non riesce

L'articolo "appartiene" a un utente e un utente "ha molti" articoli.

Pertanto la migrazione del mio articolo ha una chiave esterna denominata "user_id".

Schema::create('articles', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->text('body'); 
     $table->integer('user_id')->unsigned(); 
     $table->foreign('user_id')->references('id')->on('users'); 
     $table->timestamps(); 
    }); 

Eppure ogni volta che creo un articolo dove passo "user_id" in un campo nascosto ottengo un messaggio di errore.

{!! Form::open(array('route' => 'articles.store')) !!} 

    {!! Form::hidden('userId', $user->id) !!} 

    <div class="form-group"> 
     {!! Form::label('title', 'Title') !!} 
     {!! Form::text('title', null, array('class' => 'form-control')) !!}   
    </div> 

    <div class="form-group"> 
     {!! Form::label('text', 'Write your Article') !!} 
     {!! Form::textarea('text', null, array('class' => 'form-control')) !!}   
    </div> 

    {!! Form::submit('Create Article', array('class' => 'btn btn-default btn-success')) !!} 
{!! Form::close() !!} 

Questo è il messaggio di errore. E capisco che non provo a inserire il valore per 'user_id' nella tabella degli articoli.

SQLSTATE [23000]: Integrità violazione del vincolo: 1452 Impossibile aggiungere o aggiornamento la riga: un vincolo di chiave esterna non riesce (. tagsarticles, CONSTRAINT articles_user_id_foreign FOREIGN KEY (user_id) RIFERIMENTI users (id)) (SQL: INSERT INTO articles (title, body, updated_at, created_at) valori (titolo, il testo, 2015/03/21 23:19:33, 2015-03-21 23:19:33))

Ecco il mio deposito di metodo sul mio AriclesController:

Article::create([ 
     'title' => Input::get('title'), 
     'body' => Input::get('text'), 
     'user_id' => Input::get('userId') 
    ]); 

    return Redirect::to('articles'); 

Ci sono decine di altri aperti StackOverflow domande con un titolo simile, e sto cercando ancora senza successo per la risposta che si adatta al mio caso specifico, quindi mi grazie in anticipo gentile straniero.

Come si salva un articolo nel mio database?

risposta

Problemi correlati