问题标签 [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.
php - Laravel 5.5/Scout:如何扩展 Scout 以使用连接?
我正在通过https://packagist.org/packages/babenkoivan/scout-elasticsearch-driver使用 Laravel/Scout/Elasticsearch ,我遇到了这种情况:
要搜索,我必须使用这样的模型:
$visits = Visit::search("canada")->with(['origin', 'profile', 'user'])->paginate(10);
它工作得很好。
- 如您所见,此模型与其他三个表相关:origins(即国家)、profile 和 users。一切设置的方式,我可以搜索“加拿大”并获得所有来自加拿大的访问,这也很好。
- 结果显示在使用 paginate() 的网格中,效果也很好。
但是,如果我想按 Origins 对网格进行排序——对于我迄今为止阅读和尝试的所有内容——我不能使用这种
$model->with(...)
方法。相反,我必须使用类似的东西$visits = DB::table('visits') ->join('origins', 'origins.id', 'visits.origin_id') ->orderby($sort_column, $sort_az_za) ->paginate(10);
事情是这样的:search() 不适用于
DB::table('visits')
语法,并且Visit::search("canada")->with(....)...
方法不允许我按不在 Visits 表中的字段进行排序。
问题是:如何按我想要的任何字段搜索和排序结果?
我认为应该可以扩展 Scout 以搜索 DB::table('TABLE') 或尝试直接通过 ES 排序——尽管我更愿意将所有代码绑定到“Laravel 方式”。
如果扩展 DB::table('TABLE') 是一种方法,有人能指出我从哪里开始吗?
除此之外,还有其他想法吗?
php - 基于条件关系的搜索结果
我正在使用 Laravel 5.5 和 Laravel Scout 的 TNTSearch 引擎。我偶然发现的问题与 Eloquent 关系以及我是否可以为它们进行条件检查有关。Laravel Scout 包含一个where function
类似的 Eloquent,但它是它的简化版本,只允许列检查而没有其他功能。
搜索控制器
我想要做的目标是检查该项目是否与当前用户的公司相关。我通过company_id column
在Meta table,
Item 上有一个然后有一个称为"meta_id"
Meta 的外键的列来做到这一点。
当项目使用关系来检查用户是否具有访问权限时,我将如何仅显示当前公司的结果?如果 Laravel Scout 或 TNTSearch 引擎无法实现,有没有人知道可以让我这样做的替代方案?
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 日期时间。但它没有反映到弹性索引。
有什么建议吗?
laravel - laravel scout全文搜索安装报错
在我的 laravel 5 应用程序中安装 laravel/scout 时,出现错误。
我在腻子中运行了以下命令
我收到以下错误消息:
知道为什么会收到此错误消息。
php - 在基于查询生成器的结果上调用 searchable() 会引发错误
如何对searcable()
查询生成器返回的结果使用方法?假设有五个表:
- 产品
- 供应商
- 类别
- vendor_products(产品和供应商的数据透视表)
- product_categories(产品和类别的数据透视表)
有没有办法在以下查询中使用可搜索:
但是 Laravel Scout 返回错误:
有没有办法上传上述查询的结果?我在供应商、类别和产品模型上添加了可搜索的特征。
看起来 Scout 仅在我们从查询返回 Eloquent 关系并且不适用于查询构建器时才有效。
laravel - 有条件地向 Laravel Scout 添加索引(Algolia)
我正在尝试根据条件使用 Laravel Scout 向 Algolia 添加索引。例如,我有一个Article
模型,我只想将这篇文章添加到 Algolia,如果文章是active
. 我的第一种方法是:
这只会添加活动记录,但仍会尝试添加在 algolia 中被视为操作的空数组(我将为此付费)。第二种方法是使用shouldBesearchable()
scout 中的函数:
这不适用于php artisan scout:import "App\Article"
. 有没有人遇到过类似的问题?
laravel-5.4 - 找不到类“App\Order”
我是第一次使用 Laravel Scout,我在这里使用文档表单:https ://laravel.com/docs/5.4/scout#searching 。
完成所有步骤并添加到我的路线文件后
我找不到“App\Order”类。
我错过了我必须包括的东西吗?
php - laravel scout:如何更新控制器中的索引
这是我的问题。我想更新保存在我的控制器存储中的侦察索引。任何想法如何做到这一点?
我正在使用tntsearch包。我知道我可以在命令提示符下执行工匠命令$ php artisan scout:import App\\Models\\Paper
但是我正在开发一个网站,每个人都可以在其中提交他们的期刊,我需要一个强大的搜索引擎在我的网站上。所以在这种情况下,我需要在每次期刊提交时更新索引。让每个人都可以搜索期刊。
我设法通过制作提供者来完成这项任务的一部分TNTSearchScoutServiceProvider
。
这里是 TNTSearchScoutServiceProvider:
将此提供程序添加到 config/app.php 后。在控制器中,我正在使用这样的提供程序:
但这会引发此错误:
到目前为止,这是我所做的:虽然它会引发错误,但我只能在搜索结果中获取最后更新的行,并且最旧的行不会出现在搜索结果中。
那么你有什么建议呢?这是更好的方法吗?或者我应该每天检查该站点并运行工匠命令以便可以索引该表?