Laravel使用自定义模型查询返回500错误、仅DB门面可用问题求助
常见原因及解决方案
问题出在Exposition模型的配置和实际数据表规则不匹配,以下是对应排查解决方法:
- 模型关联表名不匹配
Laravel默认会将驼峰格式的模型类名转换为复数蛇形作为对应数据库表名,Exposition模型默认匹配的表名为expositions。如果你的迁移文件创建的表名不符合该规则,就会触发查询错误。
解决方法:在Exposition模型中手动指定实际表名:
// 写在Exposition类内部 protected $table = '你的实际数据表名';
模型路径或命名空间错误
确认Exposition.php模型文件是否存放在app/Models目录下,且文件顶部的命名空间声明为namespace App\Models;。如果模型放在app根目录,命名空间应为namespace App;,对应的控制器引用语句也要同步修改为use App\Exposition;。时间戳字段配置不匹配
如果你的数据库表没有创建Laravel默认的created_at、updated_at两个时间戳字段,需要在Exposition模型中关闭自动维护时间戳的配置:
// 写在Exposition类内部 public $timestamps = false;
如果你的时间戳字段为自定义名称,需要对应声明:
const CREATED_AT = '自定义创建时间字段名'; const UPDATED_AT = '自定义更新时间字段名';
- 类加载缓存未更新
如果是新建模型后没有更新Laravel的类加载缓存,会出现类找不到的错误,执行以下命令清除所有缓存即可:
php artisan optimize:clear
快速排查技巧
先修改项目根目录.env文件中的APP_DEBUG=true,再次访问页面就会显示具体的错误堆栈信息,可以直接定位问题根源,无需逐一排查。
内容的提问来源于stack exchange,提问作者hok
相关产品推荐
相关产品推荐

