在很多人加入我得到这个错误:
SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(laravel.posts_tag,CONSTRAINT posts_tag_tag_id_foreign FOREIGN KEY(Tag_ID)REFERENCES标记(ID)ON DELETE CASCADE)(SQL:插入到Posts_Tag(Posts_ID,Tag_ID)值(26,Tag num 2))
我的控制器:
public function Share(Request $request)
{
$posts = Posts::create($request->all());
$posts->tags()->attach(Input::get('Tag'));
return $posts;
return Redirect()->back();
}
我的模特:
public function tags()
{
return $this->belongsToMany('App\Tag', 'Posts_Tag', 'Posts_ID', 'Tag_ID');
}
观点:
{{ Form::open(array('url'=>'post')) }}
{{ Form::label('Title') }} : {{ Form::text('Title') }}
<br>
{{ Form::label('Content') }} : {{ Form::textarea('Content') }}
<br>
{{ Form::label('Tag :') }}
<select name="Tag" id="Tag" class="Tag">
@foreach($tag as $tag)
<option>{{ $tag->Tag }}</option>
@endforeach
</select>
<br>
{{ Form::submit('Share Post') }}
{{ Form::close() }}
2 回答
因为您没有传递任何标记ID,请填写选项的值
在你的控制器
您不能将实际标记名称与
attach()
一起使用 . 因为您要传递名称而不是ID,所以您需要先获取标记ID: