问题标签 [laravel-scout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
823 浏览

php - Laravel 5.5/Scout:如何扩展 Scout 以使用连接?

我正在通过https://packagist.org/packages/babenkoivan/scout-elasticsearch-driver使用 Laravel/Scout/Elasticsearch ,我遇到了这种情况:

  1. 要搜索,我必须使用这样的模型:

    $visits = Visit::search("canada")->with(['origin', 'profile', 'user'])->paginate(10);

它工作得很好。

  1. 如您所见,此模型与其他三个表相关:origins(即国家)、profile 和 users。一切设置的方式,我可以搜索“加拿大”并获得所有来自加拿大的访问,这也很好。
  2. 结果显示在使用 paginate() 的网格中,效果也很好。
  3. 但是,如果我想按 Origins 对网格进行排序——对于我迄今为止阅读和尝试的所有内容——我不能使用这种$model->with(...)方法。相反,我必须使用类似的东西

    $visits = DB::table('visits') ->join('origins', 'origins.id', 'visits.origin_id') ->orderby($sort_column, $sort_az_za) ->paginate(10);

  4. 事情是这样的:search() 不适用于DB::table('visits') 语法,并且 Visit::search("canada")->with(....)... 方法不允许我按不在 Visits 表中的字段进行排序。

问题是:如何按我想要的任何字段搜索和排序结果?

我认为应该可以扩展 Scout 以搜索 DB::table('TABLE') 或尝试直接通过 ES 排序——尽管我更愿意将所有代码绑定到“Laravel 方式”。

如果扩展 DB::table('TABLE') 是一种方法,有人能指出我从哪里开始吗?

除此之外,还有其他想法吗?

0 投票
0 回答
202 浏览

php - 基于条件关系的搜索结果

我正在使用 Laravel 5.5 和 Laravel Scout 的 TNTSearch 引擎。我偶然发现的问题与 Eloquent 关系以及我是否可以为它们进行条件检查有关。Laravel Scout 包含一个where function类似的 Eloquent,但它是它的简化版本,只允许列检查而没有其他功能。

搜索控制器

我想要做的目标是检查该项目是否与当前用户的公司相关。我通过company_id columnMeta table,Item 上有一个然后有一个称为"meta_id"Meta 的外键的列来做到这一点。

当项目使用关系来检查用户是否具有访问权限时,我将如何仅显示当前公司的结果?如果 Laravel Scout 或 TNTSearch 引擎无法实现,有没有人知道可以让我这样做的替代方案?

0 投票
1 回答
1832 浏览

elasticsearch - Laravel - 使用 Laravel Scout 包 softdelete 进行弹性搜索不起作用

我已经使用“babenkoivan/scout-elasticsearch-driver”包在 laravel 5.5 中实现了 elasticsearch 。

作曲家.json

GGIndexConfigurator 文件用于创建弹性搜索索引。

MySearchRule 文件告诉 elastic 在标题字段上进行搜索。

MegaBrand 文件以相同的模式存储/更新/删除弹性搜索中的记录,如添加 id、title、url、img 等。

以上所有代码用于弹性搜索文件和配置。现在我运行命令来创建弹性搜索索引。

php 工匠弹性:创建索引 App\GGIndexConfigurator

索引已成功创建。

品牌模型文件

到目前为止一切都很好,没有任何问题。现在我创建了新功能以使用 eloquent 在数据库中添加品牌,并且该品牌也被添加到弹性搜索中:)

所以addBrand函数工作正常,我尝试php artisan scout:import App\\Brand了在弹性搜索中添加品牌的命令并取得了成功。

真正的问题是当我软删除这个品牌时,它不会影响弹性搜索索引,而且我的软删除品牌在弹性搜索中仍然可用。

更新品牌功能

当我运行此功能时,品牌已成功从表中软删除,并且 deleted_at 字段存储 detele 日期时间。但它没有反映到弹性索引。

有什么建议吗?

0 投票
0 回答
140 浏览

laravel - laravel scout全文搜索安装报错

在我的 laravel 5 应用程序中安装 laravel/scout 时,出现错误。

我在腻子中运行了以下命令

我收到以下错误消息:

知道为什么会收到此错误消息。

0 投票
1 回答
1162 浏览

laravel - 如何在 Laravel 中使用 TNTSearch 搜索特定列?

下面是我的模型代码Product.php.

控制器代码

现在我想从我的产品表中搜索产品,但 TNTSearch 正在搜索我表中的所有列并给我结果。但是,我在一个电子商务网站上工作,我想要按产品标题然后是描述列的结果。

我的表结构如下图所示。 在此处输入图像描述

0 投票
2 回答
498 浏览

php - 在基于查询生成器的结果上调用 searchable() 会引发错误

如何对searcable()查询生成器返回的结果使用方法?假设有五个表:

  1. 产品
  2. 供应商
  3. 类别
  4. vendor_products(产品和供应商的数据透视表)
  5. product_categories(产品和类别的数据透视表)

有没有办法在以下查询中使用可搜索:

但是 Laravel Scout 返回错误:

有没有办法上传上述查询的结果?我在供应商、类别和产品模型上添加了可搜索的特征。

看起来 Scout 仅在我们从查询返回 Eloquent 关系并且不适用于查询构建器时才有效。

0 投票
1 回答
1201 浏览

laravel - 有条件地向 Laravel Scout 添加索引(Algolia)

我正在尝试根据条件使用 Laravel Scout 向 Algolia 添加索引。例如,我有一个Article模型,我只想将这篇文章添加到 Algolia,如果文章是active. 我的第一种方法是:

这只会添加活动记录,但仍会尝试添加在 algolia 中被视为操作的空数组(我将为此付费)。第二种方法是使用shouldBesearchable()scout 中的函数:

这不适用于php artisan scout:import "App\Article". 有没有人遇到过类似的问题?

0 投票
2 回答
1415 浏览

laravel-5.4 - 找不到类“App\Order”

我是第一次使用 Laravel Scout,我在这里使用文档表单:https ://laravel.com/docs/5.4/scout#searching 。

完成所有步骤并添加到我的路线文件后

我找不到“App\Order”类。

我错过了我必须包括的东西吗?

0 投票
14 回答
88418 浏览

laravel - count():参数必须是数组或者实现了Countable的对象

我面临着奇怪的情况。我在生产环境中遇到错误,而不是在开发环境中它工作正常。

开发:Laravel 5.4.28 PHP 7.0.13 MYSQL 5.7.17

生产:Laravel 5.4.28 PHP 7.2.1 MYSQL 5.7.20

在实现代码中。我用了:

在开发中它工作正常。但在生产中它给了我这个错误:count(): Parameter must be an array or an object that implement Countable in Builder.php (line 936)

正如你在这张照片中看到的:

在此处输入图像描述

知道这背后的原因是什么吗?以及如何解决?

0 投票
1 回答
1445 浏览

php - laravel scout:如何更新控制器中的索引

这是我的问题。我想更新保存在我的控制器存储中的侦察索引。任何想法如何做到这一点?

我正在使用tntsearch包。我知道我可以在命令提示符下执行工匠命令$ php artisan scout:import App\\Models\\Paper

但是我正在开发一个网站,每个人都可以在其中提交他们的期刊,我需要一个强大的搜索引擎在我的网站上。所以在这种情况下,我需要在每次期刊提交时更新索引。让每个人都可以搜索期刊。

我设法通过制作提供者来完成这项任务的一部分TNTSearchScoutServiceProvider

这里是 TNTSearchScoutServiceProvider:

将此提供程序添加到 config/app.php 后。在控制器中,我正在使用这样的提供程序:

但这会引发此错误:

到目前为止,这是我所做的:虽然它会引发错误,但我只能在搜索结果中获取最后更新的行,并且最旧的行不会出现在搜索结果中。

那么你有什么建议呢?这是更好的方法吗?或者我应该每天检查该站点并运行工匠命令以便可以索引该表?