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

Laravel中使用DirectoryEmulator创建组织单元报config类不存在错误

解决LDAPRecord测试中Target class [config] does not exist错误

可能原因1:LDAP模型静态属性依赖config()助手

如果你的OrganizationalUnit模型中使用静态属性直接调用config()助手,比如:

use LdapRecord\Models\OrganizationalUnit;

class OrganizationalUnit extends OrganizationalUnit
{
    protected $baseDn = config('ldap.default.base_dn');
}

这种写法会在类加载阶段就执行config(),而此时Laravel容器尚未完全初始化,导致找不到config类。

解决方法

将静态属性改为动态获取,比如通过重写getBaseDn()方法:

use LdapRecord\Models\OrganizationalUnit as BaseOrganizationalUnit;

class OrganizationalUnit extends BaseOrganizationalUnit
{
    protected function getBaseDn()
    {
        return config('ldap.default.base_dn');
    }
}

或者在构造函数中设置:

public function __construct(array $attributes = [])
{
    parent::__construct($attributes);
    
    $this->baseDn = config('ldap.default.base_dn');
}

可能原因2:LDAP模型未正确继承LDAPRecord基类

确保你的OrganizationalUnit模型正确继承自LDAPRecord的官方基类,而非未集成Laravel容器的自定义类:

// 直接使用官方基类
use LdapRecord\Models\OrganizationalUnit;

// 或自定义模型继承官方基类
use LdapRecord\Models\OrganizationalUnit as BaseOrganizationalUnit;

class OrganizationalUnit extends BaseOrganizationalUnit
{
    // 自定义逻辑
}

可能原因3:未指定LDAP连接创建模型

在测试中,显式指定模型使用DirectoryEmulator初始化的LDAP连接:

$ou = OrganizationalUnit::on('default')->create([
    'ou' => 'Service Groups'
]);

可能原因4:DirectoryEmulator配置问题

尝试去掉自定义的SQLite数据库路径,使用默认内存数据库测试:

$fake = DirectoryEmulator::setup('default');

如果问题解决,再排查指定SQLite文件的权限或路径是否正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:52:50