semicolon24's avatar

Can anyone help with my error? SQLSTATE[22007]:

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'Choose One' for column webkopegmar.pages.pages_category_id at row 1 (SQL: insert into pages (pages_category_id, name, slug, content, thumbnail, updated_at, created_at) values (Choose One, test pages 1, tes-pages-1, ties1, 25-04-2024.button copy2.png, 2024-04-25 05:33:29, 2024-04-25 05:33:29))

can anyone help me how to solve this

0 likes
3 replies
tykus's avatar

Incorrect integer value: 'Choose One'

You are attempting to write Choose One into a column that accepts INT type.

I would guess that you have a options in a form and the default option is Choose One? You could have caught this with appropriate use of validation. Can you show the relevant code (view and controller)?

semicolon24's avatar

@tykus

this form create

 <div class="card">
<div class="card-body">
    <a href="/pages" class="btn btn-success mb-3"> Back To Pages</a>
    <div class="row">
        <div class="col-12">
            <form action="{{ route('pages.create') }}" method="post" enctype="multipart/form-data">
                {{ csrf_field() }}
                @csrf
                <div class="form-group">
                    <label>Page Category</label>
                    <select name="pages_category_id" class="form-control select2" style="width: 100%;" required>
                        <option selected="selected">Choose One</option>
                        @foreach ($pagesCategory as $pag)
                            <option value="{{ $pag->id }}"> {{ $pag->name }} </option>
                        @endforeach
                    </select>
                </div>

                <div class="form-group">
                    <label>Name</label>
                    <input type="text" name="name" id="name" class="form-control" placeholder="Name" required @error('name') is-invalid @enderror value="{{ old('name') }}">
                    @error('name')
                    <div class="invalid-feedback">
                        {{ $message }}
                    </div>
                    @enderror
                </div>

                <div class="mb-3">
                    <label for="slug" class="form-label">Slug</label>
                    <input type="text" class="form-control" id="slug" name="slug" placeholder="slug" @error('slug') is-invalid @enderror value="{{ old('slug') }}">
                    @error('slug')
                    <div class="invalid-feedback">
                        {{ $message }}
                    </div>
                    @enderror
                </div>

                <div class="form-group">
                    <label for="content" class="form-label">Content</label>
                    @error('content')
                    <p class="text-danger">{{ $message }}</p>
                    @enderror
                    <textarea input="content" name="content" id="content" class="form-control ckeditor" cols="30" rows="15"></textarea>
                </div>

                <div class="form-group">
                    <label for="formFile" class="form-label">Thumbnail</label>
                    <input class="form-control" type="file" name="thumbnail" id="thumbnail">
                    @error('thumbnail')
                    <div class="invalid-feedback">
                        {{ $message }}
                    </div>
                    @enderror
                </div>
                
                <button type="submit" class="btn btn-success"><span class="fa fa-save"></span> Save</button>
            </form>
        </div>
    </div>
</div>
 </div>

this my controller

  public function create()
{
    return view('pages.create', [
        'title' => 'Add Pages',
        'pagesCategory' => PagesCategory::all()
    ]);
}

public function store(Request $request)
{
    // dd($request->all());
    $request->validate([
        'pages_category_id' => 'required',
        'name' => 'required',
        'slug' => 'required',
        'content' => 'required',
        'thumbnail' => 'required|image',
    ]);

    $input['content'] = (strip_tags($request->content));
    $input = $request->all();

    if ($request->hasfile('thumbnail')) {
        $image = $request->file('image');
        $imageName = date('d-m-Y') . '.' . $image->getClientOriginalName();
        $path = public_path('/uploads/pages');
        $image->move($path, $imageName);
        $input['thumbnail'] = $imageName;
    }
    
    Pages::create($input);

    return redirect('/pages')->with('success', 'Success Add Pages!!');
        }
tykus's avatar

@semicolon24 the validation rule can be used to ensure the given pages_category_id exists in the page_categories table (assuming (i) that is the table name and (ii) it is a foreign key?)"

'pages_category_id' => ['required', Rule::exists('page_categories')],

This will ensure the value is a valid ID, otherwise it will fail with a validation error

Furthermore, you can provide an empty value attribute for the default option so it does not get the option text

<option value="" selected="selected">Choose One</option>

Please or to participate in this conversation.