首页 > 解决方案 > Laravel:帖子类别未更新

问题描述

我是 Laravel 的新手,我正在尝试更新我的帖子。

标题、描述、内容、图像和日期正在更新。但是,该类别没有更新。

我在类别和帖子之间创建了一个关系。

postCreateUpdate.blade.php

   <div class="form-group">
                    <label for="category">Category</label>
                    <select name="category" id="category" class="form-control">
                        @foreach ($categories as $category)
                        <option value="{{ $category->id }}" 
                            @if (isset($posts))
                                @if($category->id == $posts->category_id)
                                selected
                                @endif
                            @endif

                            >
                        {{ $category->name }}
                        </option>
                        @endforeach

                    </select>
                </div>

PostController.php

  public function update(UpdatePostRequest $request, Post $post)
    {
        $data = $request->only(['title','description','content','published_at','category']);

        if($request->hasFile('image')){
            $image = $request->image->store('posts');
            $post->deleteImage();


            $data['image'] = $image;
        }


        $post->update($data);

        session()->flash('success','Post Updated Successfully');

        return redirect(route('post.index'));

    }

我已将文件添加到 github。这是链接:https ://github.com/remanbala/LaravelCMSExample

标签: phplaravelcontrollercategorieslaravel-7

解决方案


您的帖子表中可能有一个名为“category_id”的列,但在这种情况下,您试图在表中可能不存在的名为“category”的列上设置一个 id。

尝试将 'category' 更改为 'category_id':

postCreateUpdate.blade.php

<div class="form-group">
    <label for="category">Category</label>
    <select name="category_id" id="category_id" class="form-control">
        @foreach ($categories as $category)
        <option value="{{ $category->id }}" 
            @if (isset($posts))
                @if($category->id == $posts->category_id)
                selected
                @endif
            @endif
         >
             {{ $category->name }}
         </option>
         @endforeach
     </select>
 </div>

PostController.php

public function update(UpdatePostRequest $request, Post $post)
{
    $data = $request->only(['title','description','content','published_at','category_id']);

    if($request->hasFile('image')){
        $image = $request->image->store('posts');
        $post->deleteImage();
        $data['image'] = $image;
    }

    $post->update($data);

    session()->flash('success','Post Updated Successfully');

    return redirect(route('post.index'));
}

推荐阅读