首页 > 解决方案 > 错误:找不到列:1054 未知列“p_categories.id”

问题描述

对于我的 laravel 项目,我创建了产品类别表并将数据添加到表中。现在我需要使用 get 方法获取每个 product_category 详细信息。

这是我创建的产品类别表,

 public function up()
{
    Schema::create('p_categories', function (Blueprint $table) {
        $table->bigIncrements('category_id');
        $table->string('name');
        $table->string('size');
        $table->timestamps();
    });
}

我使用的类别控制器,

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\PCategory;
class CategoryController extends Controller
{
//
function addPCategory(Request $req)
{
    $pcategory=new PCategory;
    $pcategory->name=$req->input('name');
    $pcategory->size=$req->input('size');
    $pcategory->save();
    return $pcategory;
}

 function getCategory($id)
 {
    return PCategory :: find($id);
 }
}

在我使用的 api.php 中,

  Route :: post('addPCategory',[CategoryController::class,'addPCategory']);
  Route :: get('Category/{id}',[CategoryController::class,'getCategory']);

我在邮递员中收到此错误

  Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'p_categories.id' in 'where clause' (SQL: select * from `p_categories` where `p_categories`.`id` = 1 limit 1)

预先感谢您的帮助!

标签: javascriptjsonlaravelapipostman

解决方案


您的桌子上没有一idp_catgeories,您可以通过 do 添加一列,$table->id()或者您将不得不使用category_id而不是id.

问题是该::find()方法默认查找id列。如果你真的想要category_id代替id,你可以覆盖或重写这个函数。

您还可以将:添加protected $primaryKey = 'category_id';到您的PCategroy模型中,并且find()可以再次正常工作。


推荐阅读