Как сохранить логическое значение в Laravel 6? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть

Файл миграции:

public function up()
{
    Schema::create('bookings', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('user_id');
        $table->string('name');
        $table->string('phone');
        $table->boolean('wifi');
        $table->string('address');
        $table->text('desc');
        $table->timestamps();
    });
}

BookingController. php store метод:

public function store()
    {
        $booking = new Booking();
        $booking->user_id = 1;
        $booking->name = request('name');
        $booking->phone = request('phone');
        $booking->wifi = request('wifi');
        $booking->address = request('address');
        $booking->desc = request('desc');
        $booking->save();

        return redirect('/bookings');
    }

create.blad. php является частью флажка wifi:

<div class="field">
   <label for="wifi" class="label">Wi-Fi</label>
   <div class="control">
      <input type="checkbox" class="form-check" name="wifi" id="address">
   <div>
</div>

Когда я пытаюсь создать запись, я получаю сообщение об ошибке:

1) Я пытаюсь сохранить значение как FALSE:

Illuminate \ Database \ QueryException SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'wifi' не может быть пустым (SQL: вставить в bookings (user_id, name, phone, wifi, address, desc, updated_at, created_at) значения (1, Dragon, 12341234,?, asdfasdfasdkf hsadfasdf , asdfasdfas, 2020-02-27 07:10:55, 2020-02-27 07:10:55))

2) И когда я установил флажок Wi-Fi (значение TRUE)

Illuminate \ Database \ QueryException SQLSTATE [22007]: неверный формат даты и времени: 1366 Неверное целочисленное значение: «включено» для столбца kaganat. bookings. wifi в строке 1 (SQL : вставить в значения bookings (user_id, name, phone, wifi, address, desc, updated_at, created_at) (1, Dragon, 12341234, on, asdfasdfasdkf hsadfasdf, asdfasdfasdfsafaa, 2020-02-27 07:17:15, 2020-02-27 07:17:15))

ОБНОВЛЕНИЕ :

РЕШЕНИЕ:

Обновление с

$booking->wifi = request('wifi');

до

$booking->wifi = request()->has('wifi');

1 Ответ

1 голос
/ 01 марта 2020

Вы можете проверить с помощью метода has, было ли передано значение и, следовательно, вы можете вставить true или false.

Вы можете прочитать его здесь в документации: https://laravel.com/docs/6.x/requests#retrieving -вход

Так что это должно быть что-то вроде $request->has('wifi'). Метод has вернет true, если значение присутствует в запросе. Если это значение равно true, вы можете присвоить полю значение true, в противном случае - false. Это мой подход.

Если вам нужен пример, вы можете посмотреть на этот вопрос Передача логического значения из флажка в Laravel 5.8 форме

...