不能。webman中仅composer require illuminate/database无法直接使用eloquent:必须在onworkerstart初始化capsule并禁用持久连接,每个模型显式声明$connection,严格按表结构配置$timestamps等字段,且安装需加-w参数确保依赖完整。

Webman 里直接 composer require illuminate/database 装上 Eloquent 就能用?不能。不改初始化时机、不设连接名、不配时间戳,模型一查就报错,连接数几分钟涨到爆。
onWorkerStart 是唯一安全的初始化位置
Eloquent 的 Capsule 必须在 Worker 进程启动时初始化一次,不能放在控制器、中间件或请求回调里。Worker 长期驻留,PDO 连接复用是刚需;每次请求都 new Capsule 或调 bootEloquent(),MySQL 很快返回 Too many connections。
- 在
support/Bootstrap.php或start.php中注册Worker::onWorkerStart回调 - 回调内只执行一次
Capsule::setAsGlobal(),且必须前置配置'options' => [PDO::ATTR_PERSISTENT => false] - 检查是否多个 Bootstrap 类同时触发了
bootEloquent(),重复调用会导致连接句柄泄漏 - 若已引入
webman/database包,别再手动 new Capsule——它自带连接池,应统一走Db::connection()
每个模型必须显式声明 $connection
Webman 没有 Laravel 的全局连接上下文绑定机制,config/database.php 里的 default 只影响 Db::table() 这类无模型查询。Eloquent 模型默认找不到连接,会报 Connection not found 或静默查错库。
- 在模型类顶部写
protected $connection = 'mysql_log';,值必须和config/database.php中connections下的键完全一致(大小写敏感) - 动态切换可用
User::on('mysql_backup')->find(1),但注意:这会绕过模型自身的$connection声明,且每次新建连接实例,高并发慎用 - 若用
webman/database,它的Dbfacade 不兼容 Eloquent 的on()方法,此时只能靠模型属性控制连接
时间戳、主键、软删除字段必须按表结构硬对齐
Webman 没有 artisan 命令自动推导表结构,Eloquent 不扫描数据库,所有字段行为全靠模型显式声明。错配不是“不生效”,而是直接 SQL 报错或查不到数据。
- 表里没有
created_at/updated_at?必须加public $timestamps = false; - 主键叫
user_id而非id?必须写protected $primaryKey = 'user_id'; - 时间字段是 int 型时间戳?得配
protected $dateFormat = 'U'; - 软删除字段是
is_deleted?得同步改protected $softDelete = 'is_deleted';并配protected $casts = ['is_deleted' => 'boolean'];
composer install 必须带 -W 参数
直接 composer require illuminate/database 大概率装出残缺依赖:illuminate/support 版本错位、symfony/polyfill 缺失、甚至 Illuminate\Database\Connect 类根本不存在——表面成功,运行时报 Class not found。
- 正确命令是:
composer require -W illuminate/database illuminate/pagination symfony/var-dumper -
-W强制 Composer 解析并安装所有子依赖的兼容版本,避免“装了但跑不起来” - 装完必须执行
php start.php restart,reload不会重新加载新注册的服务提供者 - 若项目已存在
laravel/framework,注意主版本号匹配(如 v10.x 系列不能混用 v9.x 的illuminate/support)
最易被忽略的点是:Eloquent 在 Webman 里不是“即插即用”的组件,它本质是 Laravel 生态产物,而 Webman 是协程+多进程模型。连接生命周期、事件注册、模型静态上下文这些底层逻辑一旦没对齐,问题往往表现为偶发性连接失败、事务不生效、或某次部署后模型突然查不到数据——不是代码写错了,是运行模型没对上。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











