У меня простая модель статьи и модель пользователя.
Статья «принадлежит» пользователю и пользователю «hasMany».
Поэтому мой перенос статьи имеет внешний ключ, называемый «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(); });
Но всякий раз, когда я создаю статью, в которой я передаю «user_id» в скрытом поле, я получаю сообщение об ошибке.
{!! 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() !!}
Это сообщение об ошибке. И я понимаю, что я не пытаюсь вставить значение для user_id в таблицу статей.
SQLSTATE [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (
tags
. Articles, CONSTRAINTarticles_user_id_foreign
FOREIGN KEY (user_id
) ССЫЛКИusers
(id
)) (SQL: insert intoarticles
(title
,body
,updated_at
,created_at
) значения (Title, Some text, 2015-03-21 23:19:33, 2015-03-21 23:19:33))
Вот мой метод Store на моем AriclesController:
Article::create([ 'title' => Input::get('title'), 'body' => Input::get('text'), 'user_id' => Input::get('userId') ]); return Redirect::to('articles');
Есть десятки других открытых вопросов с Stackoverflow с похожим названием, и я ищу еще безуспешно для ответа, который подходит для моего конкретного случая, поэтому я благодарю вас за чужой добрый взгляд.
Как сохранить статью в моей базе данных?
Убедитесь, что у пользователя user_id
есть user_id
вашей модели.