【问题标题】:SQLSTATE[42S22]: Column not found: 1054 Unknown column "name" even though it exists in my db tableSQLSTATE [42S22]:找不到列:1054 未知列“名称”,即使它存在于我的数据库表中
【发布时间】:2021-09-17 21:25:55
【问题描述】:

即使迁移表中存在该列也会出错。

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 的数据库表中看到 task_name。这种情况下这个错误有什么解决办法?

【问题讨论】:

  • 你的Taskname,而不是task_name

标签: php sql database laravel migration


【解决方案1】:

您正在尝试将name 列中不存在的数据库数据插入到数据库中。

改变这一行:

   $task->name = $request->task_name;

进入

   $task->task_name = $request->task_name;

它会起作用的。

【讨论】:

    【解决方案2】:

    替换此行

    $task->name = $request->task_name;
    

    $task->task_name = $request->task_name;
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    【解决方案3】:

    所以,为了再次重复,但只是为了解释一下,在您的迁移中,您已将其设置为 task_name,您在 TaskController 中要做的只是名称,因此,将其更改为 @987654322 @ 是执行任务所必需的。

    另外,这也是收到 column not found 错误的原因。

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 2018-02-21
      • 2015-12-08
      • 2018-11-02
      • 2016-01-12
      • 2020-09-02
      • 2019-10-02
      相关资源
      最近更新 更多