2017-09-15 40 views
0

我剛剛在laravel中創建了一個新應用程序。我正嘗試用標籤更新我的博客文章。這是我的形式。如何更新laravel中的多對多關係標籤

{{ Form::model($blog, array('route' => array('admin.blog.update', $blog->slug), 'method' => 'PUT', 'files' => true)) }} <!-- text input --> 
        <div class="form-group"> 
        {!! Form::label('title', 'Title') !!} 
        {!! Form::text('title', null, ['class' => 'form-control', 'placeholder' => 'Title']) !!} 
        </div> 
        <div class="form-group"> 
         {!! Form::label('description', 'Please Type Here Content') !!} 
         {!! Form::textarea('content', null, ['class'=>'ckeditor', 'id'=>'my-editor']) !!} 
        </div> 
        <div class="form-group"> 
         <label>Category</label> 
         <select name="tag[]" class="form-control select2" multiple="multiple" data-placeholder="Select Categories" 
           style="width: 100%;"> 
         @forelse($tags as $tag) 
         <option>{{ $tag->name }}</option> 
         @empty 
         @endforelse 
         </select> 
        </div> 
        <div class="row"> 
         <div class="col-md-4"> 
         <div class="form-group"> 
         {!! Form::label('published_at', 'Publish On') !!} 
         {!! Form::input('date', 'published_at', date('Y-m-d'), ['class'=>'form-control']) !!} 
         </div> 
        </div> 
        </div> 
        <div class="form-group"> 
         {!! Form::label('image', 'Choose Image') !!} 
         {!! Form::file('image') !!} 
        </div> 
        @push('scripts') 
       <script src="//cdn.ckeditor.com/4.6.2/standard/ckeditor.js"></script> 
       <script> 
        var options = { 
        filebrowserImageBrowseUrl: '{{ url('filemanager')}}?type=Images', 
        filebrowserImageUploadUrl: '{{ url('upload')}}?type=Images&_token={{csrf_token()}}', 
        filebrowserBrowseUrl: '{{ url('filemanager')}}?type=Files', 
        filebrowserUploadUrl: '{{ url('upload')}}?type=Files&_token={{csrf_token()}}' 
        }; 
        CKEDITOR.replace('my-editor', options); 
       </script> 
       <script> 
    $(function() { 
    //Initialize Select2 Elements 
    $('.select2').select2() 



    //Timepicker 
    $('.timepicker').timepicker({ 
     showInputs: false 
    }) 
    }) 
</script> 
       @endpush 
       </div> 
       <div class="modal-footer"> 
       <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Close</button> 
       {!! Form::submit('Submit', array('class'=>'btn btn-info')) !!} 
       {!! Form::close() !!} 

這裏是我的控制器

> public function blogeditupdate($blog, Request $request){ 
>   $blog = Blog::where('slug', $blog)->firstorfail();$blog = new Blog; 
>   $blog->title = $request->title; 
>   $blog->content = $request->content; 
>   $blog->slug = str_slug($blog->title, '-'); 
>   $blog->user_id = Auth::user()->id; 
>   $blog->published_at = Carbon::now(); 
>   if($request->hasFile('image')) { 
>    $file = Input::file('image'); 
>    //getting timestamp 
>    $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString()); 
>    $name = $timestamp. '-' .$file->getClientOriginalName(); 
>    $file->move(public_path().'/images/blog/', $name); 
>    $blog->image = $name; 
>    $thumb = Image::make(public_path().'/images/blog/' . $name)->resize(640,420)->save(public_path().'/images/blog/thumb/' . 
> $name, 90); 
>   } 
>   $blog_id = $blog->id; 
>   $tags = $request['tag']; 
>   if (isset($tags)) {   
>    $blog->tags()->sync($tags); //If one or more tags is selected associate blog to tagblog   
>   }   
>   else { 
>    $blog->tags()->detach(); //If no tags is selected remove exisiting role associated to a blogs 
>   } 
>   return redirect()->route('admin.blog.index')->with('status', 'Edit Success'); 
>  } 

這裏是我的錯誤

SQLSTATE [23000]:完整性約束違規:1048列 'blog_id' 不能爲空(SQL:插入blog_tagblogblog_id,created_at,tagblog_id,updated_at)values(,2017-09-10 15:17:11,ghanta,2017-09-10 15:17:11))◀「

我失去了一些東西,但我不知道我在做什麼wrong.please幫助我!

+0

去phpmyadmin並將blog_id設置爲null –

+0

是這一列應該是空的 –

+0

是的,你可以,如果沒有數據來blog_id –

回答

0

在你的控制器中的第一行的末尾,你有這樣的:

$blog = new Blog; 

這意味着$blog不會有一個id,當您嘗試設置的關係,在blog_id字段是null,這違反了你的完整性約束。

如果這行錯誤,請將其刪除。

如果不是,則在嘗試同步代碼之前,您需要先撥打$blog->save()

+0

讓我試試比我會檢查爲正確的感謝 –