SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败 - laravel

时间:2016-05-15 13:14:14

标签: mysql laravel

我有3张桌子。 1.主题 老师 3.课程

我在这里的课程表迁移。

public function up()
{
    Schema::create('courses', function(Blueprint $table) {
        $table->increments('c_id');
        $table->integer('sub_id1')->unsigned()->nullable();
        $table->integer('t_id1')->unsigned()->nullable();
        $table->integer('sub_id2')->unsigned()->nullable();
        $table->integer('t_id2')->unsigned()->nullable();
        $table->integer('sub_id3')->unsigned()->nullable();
        $table->integer('t_id3')->unsigned()->nullable();
        $table->integer('sub_id4')->unsigned()->nullable();
        $table->integer('t_id4')->unsigned()->nullable();
        $table->integer('sub_id5')->unsigned()->nullable();
        $table->integer('t_id5')->unsigned()->nullable();
        $table->integer('sub_id6')->unsigned()->nullable();
        $table->integer('t_id6')->unsigned()->nullable();
        $table->integer('sub_id7')->unsigned()->nullable();
        $table->integer('t_id7')->unsigned()->nullable();
        $table->integer('sub_id8')->unsigned()->nullable();
        $table->integer('t_id8')->unsigned()->nullable();
        $table->integer('sub_id9')->unsigned()->nullable();
        $table->integer('t_id9')->unsigned()->nullable();
        $table->integer('sub_id10')->unsigned()->nullable();
        $table->integer('t_id10')->unsigned()->nullable();
        $table->integer('sub_id11')->unsigned()->nullable();
        $table->integer('t_id11')->unsigned()->nullable();
        $table->integer('sub_id12')->unsigned()->nullable();
        $table->integer('t_id12')->unsigned()->nullable();
        $table->integer('sub_id13')->unsigned()->nullable();
        $table->integer('t_id13')->unsigned()->nullable();
        $table->integer('sub_id14')->unsigned()->nullable();
        $table->integer('t_id14')->unsigned()->nullable();
    });
}

public function down()
{
    Schema::drop('courses');
}

现在我试图插入课程表。 如果我将某个值保留为null(例如sub_id5到sub_id14& t_id5到t_id14),则会发生错误。虽然当我从xampp / phpmyadmin做同样的事情时,它没有显示任何问题。更新和删除时,课程表上的约束设置为无操作。 我正在使用Collective \ Html \ FormFacade'接受输入。 这是表格代码。

{!! Form::open(array('route' => 'course.store', 'method' => 'POST')) !!}
<ul>
    <li>
        {!! Form::label('sub_id1', 'Sub_id1:') !!}
        {!! Form::number('sub_id1') !!}
    </li>
    <li>
        {!! Form::label('t_id1', 'T_id1:') !!}
        {!! Form::number('t_id1') !!}
    </li>
    <li>
        {!! Form::label('sub_id2', 'Sub_id2:') !!}
        {!! Form::number('sub_id2',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id2', 'T_id2:') !!}
        {!! Form::number('t_id2',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id3', 'Sub_id3:') !!}
        {!! Form::number('sub_id3',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id3', 'T_id3:') !!}
        {!! Form::number('t_id3',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id4', 'Sub_id4:') !!}
        {!! Form::number('sub_id4',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id4', 'T_id4:') !!}
        {!! Form::number('t_id4',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id5', 'Sub_id5:') !!}
        {!! Form::number('sub_id5',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id5', 'T_id5:') !!}
        {!! Form::number('t_id5',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id6', 'Sub_id6:') !!}
        {!! Form::number('sub_id6',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id6', 'T_id6:') !!}
        {!! Form::number('t_id6',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id7', 'Sub_id7:') !!}
        {!! Form::number('sub_id7',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id7', 'T_id7:') !!}
        {!! Form::number('t_id7',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id8', 'Sub_id8:') !!}
        {!! Form::number('sub_id8',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id8', 'T_id8:') !!}
        {!! Form::number('t_id8',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id9', 'Sub_id9:') !!}
        {!! Form::number('sub_id9',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id9', 'T_id9:') !!}
        {!! Form::number('t_id9',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id10', 'Sub_id10:') !!}
        {!! Form::number('sub_id10',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id10', 'T_id10:') !!}
        {!! Form::number('t_id10',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id11', 'Sub_id11:') !!}
        {!! Form::number('sub_id11',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id11', 'T_id11:') !!}
        {!! Form::number('t_id11',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id12', 'Sub_id12:') !!}
        {!! Form::number('sub_id12',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id12', 'T_id12:') !!}
        {!! Form::number('t_id12',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id13', 'Sub_id13:') !!}
        {!! Form::number('sub_id13',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id13', 'T_id13:') !!}
        {!! Form::number('t_id13',NULL) !!}
    </li>
    <li>
        {!! Form::label('sub_id14', 'Sub_id14:') !!}
        {!! Form::number('sub_id14',NULL) !!}
    </li>
    <li>
        {!! Form::label('t_id14', 'T_id14:') !!}
        {!! Form::number('t_id14',NULL) !!}
    </li>
    <li>
        {!! Form::submit() !!}
    </li>
</ul>
  {!! Form::close() !!}

所以这意味着如果我没有输入任何值,在任何输入字段中它应该默认发送NULL。进一步检查我发现它没有发送NULL而是发送&#39;&#39;。

这是我找到的。

at Connection->runQueryCallback('insert into `courses` (`sub_id1`, `sub_id2`, `sub_id3`, `sub_id4`, `sub_id5`, `sub_id6`, `sub_id7`, `sub_id8`, `sub_id9`, `sub_id10`, `sub_id11`, `sub_id12`, `sub_id13`, `sub_id14`, `t_id1`, `t_id2`, `t_id3`, `t_id4`, `t_id5`, `t_id6`, `t_id7`, `t_id8`, `t_id9`, `t_id10`, `t_id11`, `t_id12`, `t_id13`, `t_id14`) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', array('1', '1', '2', '', '', '', '', '', '', '', '', '', '', '', '1', '1', '2', '', '', '', '', '', '', '', '', '', '', ''), object(Closure)) in Connection.php line 629

任何身体都能帮忙吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

看起来你正在使用$ model-&gt; fill($ yourInput)。

提交表单时,您应过滤提交数据,不要包含空字段。您可以通过过滤数组来实现,例如:

$model->fill(array_filter(\Input::all(), function($var) {
   return $var !== '';
});