在非 laravel 项目中使用 eloquent 的正确方式是执行 composer require illuminate/database,并确保已启用 pdo 扩展、正确配置 capsule 连接与全局设置、显式声明模型的 $table 和 $fillable 属性。

Eloquent 不是靠 Composer “装数据库驱动”,而是装一个 PHP 类库;它本身不连数据库,得靠你系统里已启用的 pdo_mysql 这类扩展才能跑起来。
composer require illuminate/database 是唯一正解
想在非 Laravel 项目(比如纯 PHP、ThinkPHP、CakePHP 或 Slim)里用 Eloquent,composer require illuminate/database 就是标准操作。别试 composer require laravel/framework——那是整个框架,重且带一堆你不想要的依赖。
- 执行后,
vendor/illuminate/database目录会出现,核心类如Model、CapsuleManager全就位 - 注意:Composer 不会自动帮你启 PDO 扩展,
php -m | grep pdo必须看到pdo和pdo_mysql(或你用的对应驱动),否则报错Driver not found - 如果
autoload_psr4.php里没生成"Illuminate\Database\"映射,说明安装失败或composer.json写错了包名,重装前先composer clear-cache
Capsule 启动时必须调用 setAsGlobal() 和 bootEloquent()
直接 new Model 会报 Connection does not exist——因为 Eloquent 默认找全局连接实例,而 Capsule 初始化后不设全局,它就“看不见”数据库。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须写全这三步:
$capsule = new Capsule→$capsule->addConnection([...])→$capsule->setAsGlobal()→$capsule->bootEloquent() - 漏掉
setAsGlobal(),所有静态查询方法(如User::all())都会失败;漏掉bootEloquent(),模型事件、时间戳等特性不生效 - 配置数组里别写错键名:
driver不是type,charset缺失可能导致中文乱码,prefix留空别写成null
模型定义里 $fillable 和 $table 是最容易翻车的两个点
刚写完 class User extends Model 就报 MassAssignmentException 或查不到数据?大概率栽在这俩属性上。
-
$fillable = ['name', 'email']是白名单,不设它,User::create([...])直接拒绝写入;设成$guarded = []也行,但更危险 -
$table = 'users'要显式声明,尤其当类名不是复数(比如Article对应表是article而非articles),否则 Eloquent 默认按规则猜,一猜就错 -
$timestamps = false得手动关,否则插入时会尝试写created_at,表里没这字段就报错
真正卡住人的从来不是语法,而是 PDO 没开、Capsule 没设全局、模型没填白名单——这些地方一错,错误信息还特别绕,比如 Call to undefined method IlluminateDatabaseQueryBuilder::xxx(),其实只是模型根本没绑定到连接上。










