无法在我的laravel应用程序

时间:2017-05-03 10:27:58

标签: php laravel-5.4

新-job.blade.php

<select class="js-example-basic-multiple categories  form-control" name="categories[]" style="width: 100%" multiple="multiple">
    <option value=""></option>
    @foreach($array['categories'] as $key => $category)
        <option value="{!! $category->id !!}">{!! $category->category_name !!}</option>
    @endforeach
</select>

这是多选框,它正常工作。 $ array ['categories']包含我的类别表中的所有类别

在控制器中

dd($request['categories']);

给我一​​个选定类别ID的数组,例如:['1','2']

但是当我尝试将它与数据透视表同步时

$job->categories()->sync($request['categories']);

我收到此错误

  

SQLSTATE [23000]:完整性约束违规:1452无法添加或   更新子行:外键约束失败   (jobs_websitecategory_job_post,CONSTRAINT   category_job_post_category_id_foreign外键(category_id)   参考categoryid)ON DELETE CASCADE)(SQL:insert into   category_job_postcategory_idjob_post_id)值(11,1))

我的类别表

中没有像11这样的ID

JobPost.php

public function categories() {
    return $this->belongsToMany('App\Category', 'category_job_post', 'category_id', 'job_post_id');
}

Category.php

public function jobs() {
    return $this->belongsToMany('App\JobPost');
}

1 个答案:

答案 0 :(得分:1)

您必须切换列名

public function categories() {
    return $this->belongsToMany('App\Category', 'category_job_post', 'job_post_id', 'category_id');
}