当objectId不是主键时,Scout Algolia不会删除

问题描述 投票:0回答:3

当我将模型导入Algolia时,我将ObjectId更改为另一个字段的值。但是当我在我的对象上调用delete()时,它似乎并没有从Algolia中删除它。更清楚这里是一个例子:

用户{id,电子邮件名称}

Algolia用户{objectId:电子邮件,名称}

有没有办法解决这个问题? scout是否具有覆盖与toSearchableArray类似的原始删除功能的功能?

编辑:我已经在Scout GitHub上为任何感兴趣的人请求了此功能

laravel laravel-5 algolia laravel-scout
3个回答
1
投票

我最终使用Algolia SDK手动删除它。

    $client = new \AlgoliaSearch\Client(env('ALGOLIA_APP_ID'), env('ALGOLIA_SECRET'));
    $index = $client->initIndex('index_name');
    $index->deleteObject($model->email);

1
投票

我认为最简单的方法是创建一个自定义驱动程序并扩展AlgoliaEngine。

我写了一些关于它的文档:https://www.algolia.com/doc/api-client/laravel/extending-scout#extending-algolias-driver


0
投票

我想你的模型有问题。遵循惯例:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'my_flights';
}

更多:https://laravel.com/docs/5.5/eloquent#eloquent-model-conventions

在这里你有类似的问题:https://discourse.algolia.com/t/model-import-problem/3300/2

© www.soinside.com 2019 - 2024. All rights reserved.