Ошибка Laravel при использовании значения из $ Request - PullRequest
0 голосов
/ 18 марта 2019

У меня есть следующая форма, это простая форма с одним переключателем:

@extends('layouts.app')

@section('content')
        <h1>Accomodation</h1>
        <p>This is the accomodation page.</p>

    {!! Form::open(['action' => ['UserController@update', Auth::id()], 'method' => 'POST']) !!}
            <div class="form-group">
                    {{Form::label('ConsiderForAccommodation', 'Consider Me For Accommodation')}}
                    {{Form::checkbox('ConsiderForAccommodation', 'Consider Me For Accommodation', false)}}
            </div>
            {!! Form::token() !!}
            {{Form::hidden('_method', 'PUT')}}
            {{Form::submit('Submit', ['class' => 'btn btn-primary'])}}
    {!! Form::close() !!}
@endsection

Затем я пытаюсь обновить значение «думать для связи », которое является полем, добавленным в таблицу пользователей:

 /**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function update(Request $request)
{
    // Update the given user
    $user = auth()->user();

    $user->ConsiderForAccommodation = $request->input('ConsiderForAccommodation');

    $user->save();

    return redirect('/accommodation');
}

Тем не менее, после установки флажка и отправки формы мне выдается следующее сообщение:

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'Consider Me For Accommodation' for column 'ConsiderForAccommodation' at row 1 (SQL: update `users` set `updated_at` = 2019-03-18 20:44:37, `ConsiderForAccommodation` = Consider Me For Accommodation where `id` = 1)

Похоже, что этот метод обновления достигает цели, однако я, похоже, что-то делаю не так, так как он не поднимает значение флажка.

Что я делаю не так? Если потребуется больше кода, я буду рад обновить сообщение.

РЕДАКТИРОВАТЬ - Миграция таблицы пользователя, глядя в MySQL столбец был создан как «TinyInt», который, насколько я знаю, является правильным типом:

class UserAddAccomodationFields extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    // Add field "ConsiderForAccommodation" to table.
    Schema::table('users', function(Blueprint $table)
    {
        $table->boolean('ConsiderForAccommodation');
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    // Remove field "ConsiderForAccommodation" from table.
    Schema::table('users', function(Blueprint $table)
    {
        $table->dropColumn('ConsiderForAccommodation');
    });
}
}

Ответы [ 2 ]

1 голос
/ 19 марта 2019

В документации laravelcollective/html я вижу следующее.

Form::checkbox('name', 'value', true);

Это означает, что вы должны изменить свой код флажка на это:

{{Form::checkbox('ConsiderForAccommodation', 1, false)}}

Я предполагаю, что значение передается в запросе, когда отмечен флажок, и что оно возвращает null в противном случае, хотя и не совсем точно.

Предполагая, что выше, вы можете сделать что-то вроде этого в вашем контроллере:

if($request->input('ConsiderForAccomodation') == null) {
   $user->ConsiderForAccomodation = 0;
} else {
   $user->ConsiderForAccomodation = 1;
   // or $user->ConsiderForAccomodation = $request->input('ConsiderForAccomodation');
}
0 голосов
/ 18 марта 2019

Я думаю, что у вас есть ошибка в вашей структуре таблицы Sql.

`SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'Consider Me For Accommodation' for column 'ConsiderForAccommodation' at row 1 (SQL: update `users` set `updated_at` = 2019-03-18 20:44:37, `ConsiderForAccommodation` = Consider Me For Accommodation where `id` = 1)

`

Это означает, что ConsiderForAccommodation Столбец имеет формат даты и времени.Вы пытаетесь написать в нем целое число.

Пожалуйста, посмотрите на таблицу миграций или SQL и обновите ее, если хотите использовать ее как boolean или Integer

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