Laravel: категория сообщений не обновляется - PullRequest
0 голосов
/ 13 апреля 2020

Я новичок в 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

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Что касается меня, то, что я до сих пор понял, так это то, что я прошел через ваш репозиторий и нашел файл миграции CreatePostsTable -

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('description');
            $table->text('content');
            $table->string('image')->nullable();
            $table->timestamp('published_at')->nullable();
            $table->timestamps();

        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

Видите, проблема? Там нет поля category_id. Если вы уже запустили миграцию, то, вероятно, в таблице записей не будет поля category_id. Надеюсь, это поможет вам. Спасибо.

0 голосов
/ 13 апреля 2020

Возможно, у вас есть столбец с именем "category_id" в вашей таблице сообщений, но в этом сценарии вы пытаетесь установить идентификатор для столбца с именем "category", который, вероятно, не существует в вашей таблице.

Попробуйте изменить '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'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...