未选择下拉列表时避免触发外键约束

时间:2016-08-19 16:00:07

标签: forms laravel input laravel-5

我有一个使用laravel表单助手的选择下拉列表,如下所示:

{!! Form::label('job_id', 'Job Titlle', ['class' => ' control-label']) !!}
{!! Form::select('job_id', $jobs, null, ['class' => 'form-control', 'placeholder' => 'Select']) !!}

问题是当我尝试更新模型时会导致外键约束            。我认为传递一个空字符串,我不知道如何阻止它发生。

请帮助谢谢!

3 个答案:

答案 0 :(得分:2)

1)Validate数据发送到数据库之前;在你的控制器中这样的东西会起到作用:

class JobController extends Controller
{
    public function store(Request $request)
    {

        $this->validate($request, [
             'job_id' => 'required'
        ]);

        // Store in the database because data is valid
    }
}

2)如果确实不需要job_id,可以通过将列指定为nullable

来避免外键约束失败

答案 1 :(得分:1)

在数据库表格中创建列null

ALTER mytable MODIFY mycolumn varchar(255) null;

答案 2 :(得分:0)

这对我有用。

if(isset($request['fk_id']) && empty($request['fk_id'])) {
            $request['fk_id'] = null;
        }