是否可以在对记录进行更新时禁用toSearchableArray
,或者是否有任何方法只更新搜索索引中记录中的特定字段?
例如:
public function toSearchableArray()
{
$item = $this->toArray();
$item['title'] = $this->title;
...
...
...
$item['category'] = $this->category->category_name;
$item['uploaded_at'] = Carbon::now('America/Montreal')->timestamp;
}
现在唯一的问题是每次更新记录时它还会重置其uploaded_at时间戳并重新加载关系,这是我不需要的另一个查询,因为它在我创建项目时已经设置了它。
那么有什么方法可以临时禁用toSearchableArray
吗?我只需要更新索引行中的几个字段,这样就不需要重新运行toSearchableArray中的所有内容
与bellow一样,只更新标题,然后更新我的algolia索引中的标题,而不重置uploaded_at
或再次加载category
关系
$order = App\Order::find(1);
$order->title = 'a new title'
$order->save();
答案 0 :(得分:0)
您可以使用laravel scout中可用的unsearchable
函数。
$modal->unsearchable();
//etc.....
//Finally save the modal
$modal->save()
这样,当您保存或更新时,它不会同步到algolia。
如果您再次想要将模型同步到算法,则可以调用searchable
方法,如下所示。
$modal->searchable();