Laravel 5.8 SQLSTATE [23000]: нарушение ограничения целостности: 1048

После добавления редактора TinyMCE вместо универсального редактора, который у меня был, я получаю ошибку SQLSTATE [23000]: нарушение ограничения целостности. Проведя некоторое исследование, я понял, что мне не хватает тега name. Но добавление этого ничего не изменило. Я добавил свой код ниже.

файл лезвия

<div class = "row" style = "padding-top: 15px;">
        <div class = "col-lg-10 col-md-10">
            <div class = "card card-primary">
                <div class = "card-header">
                  <h3 class = "card-title">Add Product</h3>
                </div>
                <!-- /.card-header -->
                <!-- form start -->
                <form role = "form" action = "{{  route('product.store')  }}" method = "post" enctype = "multipart/form-data">
                  {{ csrf_field() }}
                  <div class = "card-body">
                    <div class = "form-group">
                      <label for = "productName">Product Name</label>
                      <input type = "text" class = "form-control" id = "productName" name = "productName" placeholder = "Product Name">
                    </div>
                    <div class = "form-group">
                      <label for = "slug">Slug</label>
                      <input type = "text" class = "form-control" id = "slug" name = "slug" placeholder = "slug">
                    </div>
                    <div class = "form-group">
                      <div class = "pull-right">
                        <label for = "image">File input</label>
                        <input type = "file" name = "image" id = "image">
                      </div>
                    </div>
                  </div>
                  <div class = "row">
                    <div class = "col-md-12">
                      <div class = "card card-outline card-info">
                        <div class = "card-header">
                          <h3 class = "card-title">
                            Product Description
                          </h3>
                        </div>
                        <!-- /.card-header -->
                        <div class = "card-body pad">
                          <div class = "mb-3">
                            <textarea id = "basic-conf" class = "textarea" name = "description" placeholder = "Place some text here" style = "width: 100%; height: 200px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;"></textarea>
                          </div>
                        </div>
                      </div>
                    </div>
                    <!-- /.col-->
                  </div>
                  <!-- /.card-body -->
  
                  <div class = "card-footer">
                    <input type = "submit" class = "btn btn-primary">
                    <a href='{{ route('product.index') }}' class = "btn btn-warning">Back</a>
                  </div>
                </form>
              </div>
        </div>
    </div>

контроллер

public function store(Request $request)
    {
        $this->validate($request, [
            'productName'=>'required',
            'slug'=>'required',
            'image'=>'required',
            'description'=>'required',
        ]);
        $product = new product();

        $product->product_name = $request->productName;
        if ($request->hasFile('image')) {
            $image = $request->file('image');
            $image_name = time() . $image->getClientOriginalName();
            $destinationPath = public_path('/uploads/products');
            $image->move($destinationPath, $image_name);
            $product->image = $image_name;
        }

        $product->slug = $request->slug;
        $product->description = $request->productDescription;
        $product->save();
        return redirect(route('product.index'));
    }

файл миграции

    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('product_name');
            $table->string('slug')->unique();
            $table->text('description');
            $table->string('image');
            $table->timestamps();
        });
    }
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы назвали текстовое поле «описание»

 <div class = "card-body pad">
    <div class = "mb-3">
        <textarea id = "basic-conf" class = "textarea" name = "description" placeholder = "Place some text here" style = "width: 100%; height: 200px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;"></textarea>
    </div>
</div>

И вы пытаетесь получить значение по ключу "productDescription" объекта $request, который, естественно, возвращает значение null.

Пытаться

public function store(Request $request)
    {
        $this->validate($request, [
            'productName'=>'required',
            'slug'=>'required',
            'image'=>'required',
            'description'=>'required',
        ]);
        $product = new product();

        $product->product_name = $request->productName;
        if ($request->hasFile('image')) {
            $image = $request->file('image');
            $image_name = time() . $image->getClientOriginalName();
            $destinationPath = public_path('/uploads/products');
            $image->move($destinationPath, $image_name);
            $product->image = $image_name;
        }

        $product->slug = $request->slug;
        $product->description = $request->description;   //changed from productDescription to description
        $product->save();
        return redirect(route('product.index'));
    }

Спасибо. Я понял это через час после публикации этого вопроса.

ivanantonov 12.12.2020 20:00

Другие вопросы по теме