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

Laravel Jenssegers MongoDB插入报错:Undefined class constant 'PRIMARY'

问题:Laravel 8 + Jenssegers MongoDB 插入数据时报错 "Undefined class constant 'PRIMARY'"

环境信息

  • Laravel 版本:8.0
  • MongoDB 版本:5.0(驱动版本1.16)
  • Jenssegers MongoDB 包版本:3.8(官方文档显示三者兼容)

MongoDB 数据库配置

'mongodb' => [
   'driver'   => 'mongodb',
   'host'     => env('DB_CONNECTION_THIRD', 'localhost'),
   'port'     => env('DB_PORT_THIRD', 27017),
   'database' => env('DB_DATABASE_THIRD', 'your_db_name'),
   'username' => env('DB_USERNAME_THIRD', 'your_username'),
   'password' => env('DB_PASSWORD_THIRD', 'your_password'),
],

模型代码示例

namespace App\Models\AI;

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

class Chatgpt extends Model
{
    protected $connection = 'mongodb';
    protected $collection = 'my_log';
}

错误信息

"message": "Undefined class constant 'PRIMARY'"

已尝试操作

  • 手动定义模型主键,但问题仍未解决

可能的解决方案

1. 确认模型父类继承正确性

确保模型继承的是 Jenssegers\Mongodb\Eloquent\Model,而非 Laravel 原生的 Illuminate\Database\Eloquent\Model。即使示例代码已正确导入,也需排查是否存在代码重构、导入别名冲突等问题。

2. 排查依赖版本冲突

执行命令检查项目依赖版本:

composer show

确认 mongodb/mongodb 驱动与 Jenssegers 包版本兼容,若存在冲突,可锁定版本重新安装:

composer require jenssegers/mongodb:3.8.* mongodb/mongodb:1.16.*

3. 明确主键配置细节

在模型中显式定义 MongoDB 主键相关属性,覆盖默认配置:

class Chatgpt extends Model
{
    protected $connection = 'mongodb';
    protected $collection = 'my_log';
    protected $primaryKey = '_id';
    protected $keyType = 'string';
    public $incrementing = false;
}

4. 清除应用缓存

执行以下命令清除配置缓存与应用缓存,避免旧配置残留:

php artisan config:clear
php artisan cache:clear

5. 验证环境变量配置

检查 .env 文件中 MongoDB 相关环境变量是否拼写正确、配置有效:

DB_CONNECTION_THIRD=mongodb
DB_PORT_THIRD=27017
DB_DATABASE_THIRD=your_db_name
DB_USERNAME_THIRD=your_username
DB_PASSWORD_THIRD=your_password

内容的提问来源于stack exchange,提问作者Mehran Alidoost Nia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:25:58