新-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_website
。category_job_post
,CONSTRAINTcategory_job_post_category_id_foreign
外键(category_id
) 参考category
(id
)ON DELETE CASCADE)(SQL:insert intocategory_job_post
(category_id
,job_post_id
)值(11,1))
我的类别表
中没有像11这样的IDJobPost.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');
}
答案 0 :(得分:1)
您必须切换列名
public function categories() {
return $this->belongsToMany('App\Category', 'category_job_post', 'job_post_id', 'category_id');
}