首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel获取弹性搜索实例中的错误

laravel获取弹性搜索实例中的错误
EN

Stack Overflow用户
提问于 2018-11-04 07:56:58
回答 1查看 273关注 0票数 6

在我的Laravel5.7应用程序中,我想使用elasticsearch,我找到了这篇https://michaelstivala.com/learning-elasticsearch-with-laravel/文章。首先,我想从我想要与elasticsearch一起使用的表中导入所有数据。1)我创建了一个包装文件app/Elastic.php,其中包含了githubusercontent的内容。这是适合这个文件的dir吗?

2)在我的模型app/Vote.php中添加了函数

公共静态函数bulkVotesToElastic() {

代码语言:javascript
复制
$elastic = app(App\Elastic\Elastic::class);

Vote::chunk(100, function ($Votes) use ($elastic) {
    foreach ($Votes as $Vote) {
        $elastic->index([
            'index' => 'select_vote',
            'type' => 'vote',
            'id' => $Vote->id,
            'body' => $Vote->toArray()
        ]);
    }
});

}

因为我有填充init数据的播种机。但是调用这个方法我得到了错误:

代码语言:javascript
复制
Class App\App\Elastic\Elastic does not exist

为什么出错,以及如何修复?

实际上这条线

代码语言:javascript
复制
$elastic = app(App\Elastic\Elastic::class);

背后是我的拉拉补偿..。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 22:45:03

与其说是关于Laravel / Elasticsearch的问题,不如说是关于PHP名称空间和PSR-4自动加载的问题。

如果你看一下你的Laravel应用程序的composer.json文件,你会发现一些东西。喜欢

代码语言:javascript
复制
"autoload": {
    "psr-4": {
        "App\\": "app/"
    }
}

这意味着您希望在您的PSR-4目录中遵循名称空间的/app规范。基本上,这意味着您的文件夹结构必须与您的命名空间层次结构相对应。

因此,,问题1:您提到的在/app/Elastic.php中有一个类App\Elastic\Elastic。这个类不能由PSR-4自动加载程序加载,它应该在/app/Elastic/Elastic.php中或者在命名空间App\中声明。

问题2:调用时的

代码语言:javascript
复制
$elastic = app(App\Elastic\Elastic::class);

在名称空间中,例如App/,它会按照错误说明被解析为App/App。为了避免这种情况,按照Anar的建议使用\App\Elastic\Elastic::class,或者通过use语句导入类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53138808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档