Как устранить ошибку вставки PHP Laravel Sql? - PullRequest
0 голосов
/ 07 октября 2018

Когда я нажимаю кнопку покупки, я получаю эту ошибку

QueryException в строке Connection.php 729:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'Кол-во'не может быть пустым (SQL: вставить в orders (user_id, product_id, qty, updated_at, created_at) значения (3, 1,, 2018-10-06 20:44:27,2018-10-06 20:44:27))

Прежде всего, я новичок, поэтому я все еще учусь и не знаю, правильно ли это, все, что яКогда я нажимаю кнопку покупки, на экране появляется форма, и я набираю количество, затем отправляю, и мое количество увеличивается, а запас товаров уменьшается, и если я удалю свой заказ, товары снова увеличатся (я сделал это, и ядумаю, что это сработает), и пользователь может обновить свое количество, и если кто-то заказал что-то, продавец не сможет удалить его, обновит только свой инвентарь так же, как способ покупки кнопки и форму, и если пользователи заказали все продукты, они будут отображаться (изна складе) с кнопкой мертвой ссылки, я тренируюсьж, это не домашняя работа, и я не знаю, как написать все функции ..

это кнопка Купить

<li><span><a href="/add_order/{{ $product['id'] }}">Buy</a></span></li>

, которая должна появиться в следующей форме, когда я нажимаю ее,

это мой код формы для кнопки покупки

<form method="POST" action="/add_order/{{ $product['id'] }}" class="klaviyo_subscription_form" enctype="multipart/form-data">

    {{ csrf_field() }}

    <input type="hidden" name="g" value="LIST_ID">

    <div class="klaviyo_fieldset">
        <p class="klaviyo_header">Please define quantity you need, then order it.</p>
    </div>

    <div class="klaviyo_fieldset">
        <div class="klaviyo_field_group{{ $errors->has('qty') ? ' has-error' : '' }}">
            <label for="k_id_modal_$email" style="display: block; text-align:center">Quantity</label>               
            <input type="number" id="k_id_modal_$email" name="qty" style="display: block; margin:auto">

            @if ($errors->has('qty'))
                <span class="help-block">
                    <strong>{{ $errors->first('qty') }}</strong>
                </span>
            @endif
        </div>
    </div>

    <div class="klaviyo_fine_print"></div>

    <div class="klaviyo_form_actions">
        <button type="submit" class="klaviyo_submit_button">
            <span>Order Now</span>
        </button>
    </div>

    <div class="klaviyo_below_submit" ></div>
</form>

OrderController

public function store(Request $request, $id)
{
    $product = Product::find($id);
    $order = new Order();
    $order->user_id = Auth::user()->id;
    $order->product_id = $id;
    $order->qty = $request->get('qty');
    $product->inv = $product->inv - $order->qty;
    $order->save();
    $product->save();

    return redirect('/');
}

спасибо за чтение: D

Ответы [ 3 ]

0 голосов
/ 07 октября 2018

Ваша проблема в том, что вы отправляете данные методом POST.

Но вы получаете доступ к данным из метода GET.

OrderController

$order->qty = $request->get('qty');   // this is where you are wrong.

Измените это либо,

$order->qty = $request->post('qty');

, либо

$order->qty = $request->qty // this is the preferred approach.
0 голосов
/ 07 октября 2018

В вашей таблице базы данных подано "qty" установите значение по умолчанию null или по умолчанию 0. и напишите

$order->qty = $request->qty;

, оно будет работать нормально

0 голосов
/ 07 октября 2018

Запрос - это объект, а не массив! Вам необходимо использовать метод для получения значения запроса.Проверьте обновленный код

  public function store(Request $request, $id)
  {
    $product = Product::find($id);
    $order = new Order();
    $order->user_id = Auth::user()->id;
    $order->product_id = $id;
    $order->qty = $request->get('qty');
    $product->inv = $product->inv - $order->qty;
    $order->save();
    $product->save();
    return redirect('/');
  }

Это будет работать, если логика для передачи "qty" в запрос верна.Вы можете сделать дамп запроса и умереть внутри функции store, чтобы убедиться в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...