#php #sql #database #laravel #migration
Вопрос:
Ошибка, даже если столбец существует в таблице переноса.
SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестное имя столбца в списке полей (SQL: вставка в
tasks
значения (name
,description
,statuse_id
,updated_at
,created_at
) (Padaryti pietus, fsd, 2, 2021-07-07 09:45:47, 2021-07-07 09:45:47))
Миграция
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('task_name', 128);
$table->text('task_description');
$table->unsignedBigInteger('statuse_id');
$table->foreign('statuse_id')->references('id')->on('statuses');
$table->timestamps();
});
Контроллер задач
public function store(Request $request)
{
$validator = Validator::make($request->all(),
[
'task_name' => ['required', 'min:3', 'max:128'],
'task_description' => ['required'],
'statuse_id' => ['required', 'integer', 'min:1'],
]
);
if ($validator->fails()) {
$request->flash();
return redirect()->back()->withErrors($validator);
}
$task = new Task;
$task->name = $request->task_name;
$task->description = $request->task_description;
$task->statuse_id = $request->statuse_id;
$task->save();
return redirect()->route('task.index')
->with('success_message', 'New task created successfuly');
}
Задача create.blade.html
<form method="POST" action="{{ route('task.store') }}">
<div class="form-group">
<label>Name:</label>
<input type="text" name="task_name" class="form-control"
value="{{old('task_name')}}">
<small class="form-text text-muted">Add a task name</small>
</div>
<label>Description:</label>
<textarea name="task_description" id="summernote">
{!!old('task_description')!!}
</textarea>
<small class="form-text text-muted">Add task description</small>
<div class="form-group">
<select name="statuse_id">
@foreach ($statuses as $statuse)
<option value="{{$statuse->id}}">{{$statuse->name}}</option>
@endforeach
</select>
<small class="form-text text-muted">Select a status</small>
</div>
@csrf
<button type="submit" class="btn">ADD</button>
</form>
Я вижу имя задачи в своей таблице БД в phpMyAdmin. Каково решение этой ошибки в данной ситуации?
Комментарии:
1. У тебя
Task
естьname
, а неtask_name
Ответ №1:
Вы пытаетесь вставить в базу данных данные в столбце name
, пока его не существует.
Измените эту строку:
$task->name = $request->task_name;
в
$task->task_name = $request->task_name;
И это сработает.
Ответ №2:
Итак, для повторения этого еще раз, но просто чтобы объяснить немного больше, в процессе миграции вы установили , что то task_name
, что вам нужно сделать в вашем контроллере задач, — это просто имя, поэтому task_name
для выполнения задачи требуется изменить его на.
Кроме того, это является причиной получения ошибки столбца не найдено.
Ответ №3:
Замените эту строку
$task->name = $request->task_name;
с
$task->task_name = $request->task_name;
Комментарии:
1. Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него уроки