SQLSTATE[23000]: Нарушение ограничения целостности: Столбец 1048 «цветовой код» не может быть равен нулю laravel

#php #laravel

Вопрос:

У меня есть две таблицы продуктов и цветов.

Я хочу хранить несколько строк в нескольких таблицах в своей базе данных. Мой контроллер в настоящее время не хранит несколько значений, он сохраняет только одну строку в таблицах «Мои товары» и «списки товаров».

Как делать ставки? Если бы он был пуст.

лезвие

 <div class="row no-gutters mb-1">
    <div class="col-md-3">
        <label for="color_name" class="ml-1">color_name:</label>
        <input type="text" id="color_name" name="color_name[]" class="form-control w-auto d-inline">
    </div>
    <div class="col-md-3">
        <label for="color_code" class="ml-1">color_code:</label>
        <input type="text" id="color_code" name="color_code[]" class="form-control w-75 d-inline jscolor">
    </div>
    <div class="col-md-1">
        <a onclick="addColor()" class="btn btn-info"><i class="fas fa-plus"></i></a>
        <a onclick="deleteColor()" class="btn btn-danger"><i class="fas fa-times"></i></a>
    </div>
</div>
 

ProductController.php

 public function store(ProductRequest $request)
{
    $product = Product::create([
        'title' => $request->title,
        'latin' => $request->latin,
        'price' => $request->price,
        'discount' => $request->discount,
        'body' => $request->body,
        'keywords' => $request->keywords,
        'descriptions' => $request->descriptions,
    ]);
    $product->categories()->attach($request->category_id);

    $colorCodes = $request->color_code;
    $colorNames = $request->color_name;

    foreach ($colorCodes as $key => $color_code) {
        if ($request->color_code != null amp;amp; $request->color_name != null) {
            $color = new Color;
            $color->product_id = $product->id;
            $color->color_code = $color_code;
            $color->color_name = $colorNames[$key];
            $color->save();
        }
    }
    return redirect()->route('products.index');
}
 

Чтобы определить, есть ли какие-либо результаты, вы можете выполнить одно из следующих действий:

SQLSTATE[23000]: Нарушение ограничения целостности: Столбец 1048 «имя цвета» не может быть пустым (SQL: вставить в colors ( product_id , color_code , color_name , updated_at , created_at ) значения (20, #FFFFFF, ?, 2021-07-29 18:38:17, 2021-07-29 18:38:17))

Комментарии:

1. Вы отправляете ? как имя цвета

2. $colorNames[$key] очевидно, равно нулю. Вы проверяете $request->color_name , не является ли значение null, но, вероятно, вам следует проверить, $colorNames[$key] не является ли оно вместо этого значением null.

3. Вы можете отправить полный код?