当我将模型导入 Algolia 时,我将 ObjectId 更改为另一个字段的值。但似乎当我在我的对象上调用 delete() 时,它并没有从 Algolia 中删除它。为了更清楚,这里有一个例子:
用户{ id,电子邮件名称}
Algolia 用户 {objectId :email,name}
有没有办法解决这个问题?scout 是否有类似于 toSearchableArray 的覆盖原始删除功能的功能?
编辑:我已在Scout GitHub 上为任何感兴趣的人请求此功能
当我将模型导入 Algolia 时,我将 ObjectId 更改为另一个字段的值。但似乎当我在我的对象上调用 delete() 时,它并没有从 Algolia 中删除它。为了更清楚,这里有一个例子:
用户{ id,电子邮件名称}
Algolia 用户 {objectId :email,name}
有没有办法解决这个问题?scout 是否有类似于 toSearchableArray 的覆盖原始删除功能的功能?
编辑:我已在Scout GitHub 上为任何感兴趣的人请求此功能
我最终使用 Algolia SDK 手动删除它。
$client = new \AlgoliaSearch\Client(env('ALGOLIA_APP_ID'), env('ALGOLIA_SECRET'));
$index = $client->initIndex('index_name');
$index->deleteObject($model->email);
我认为最简单的方法是创建自定义驱动程序并扩展 AlgoliaEngine。
我写了一些关于它的文档: https ://www.algolia.com/doc/api-client/laravel/extending-scout#extending-algolias-driver
我猜你的模型有问题。遵守约定:
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