You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel编辑数据报错:SQLSTATE[42S22]找不到packages.id列

解决Laravel findOrFail 报错 Unknown column 'packages.id' 的问题

错误信息

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'packages.id' in 'where clause'

问题原因

Laravel Eloquent 模型默认认定表的主键字段为id,但你的packages表通过迁移设置了自定义主键package_id。调用findOrFail($package_id)时,框架自动生成的SQL语句会使用where id = ?作为查询条件,导致数据库找不到对应列。

解决方案

方案一:在模型中指定主键(推荐)

修改App\Models\Packages模型,添加$primaryKey属性明确自定义主键:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Packages extends Model
{
    use HasFactory;
    protected $guarded = [];
    // 指定自定义主键字段
    protected $primaryKey = 'package_id';
}

修改后,findOrFail($package_id)会自动生成where package_id = ?的查询条件,匹配你的数据库结构。

方案二:手动编写查询条件(备选)

若不想修改模型,可在控制器中替换findOrFail为指定字段的查询:

public function EditPackage($package_id) {
    $package = Packages::where('package_id', $package_id)->firstOrFail();
    return view('backend.packages.edit_package', compact('package'));
}

参考代码正常的原因

你之前的PropertyType模型能正常运行,是因为对应表使用了Laravel默认的id作为主键,findOrFail($id)可直接匹配正确字段。

内容的提问来源于stack exchange,提问作者Nipuna Kusal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:45:17