Algolia:如何使用以下数据创建优化列表

Algolia: How To Create a Refinement List with the following Data

我正在尝试使用以下产品数据创建优化列表:

  1. Table 1: 产品
  2. Table 2:产品详情。

使用 Table 产品,可以完美地检索所有需要的数据,创建一个与 algolia 电子商务百思买示例非常相似的 json 文件。

{
“id”: "3953367"
“name”: “360fly - Panoramic 360° HD Video Camera - Black”,
“popularity”: 9999,
“rating”: 5,
“objectID”: “9131042”
},

另一方面,Table 2 -> Product Details 具有以下结构:

id - productId - name - value.
1 - 3953367 - Operating System - Android 4.4 KitKat
2 - 3953367 - Voice Activated - Yes
3 - 3953367 - Processor Speed - 1.2 gigahertz

如您所见,1个单品可以显示3个以上的facet选项。

  1. 操作系统
  2. 语音激活
  3. 处理器速度

但我不知道如何构建数据来创建这样的优化列表:

例如,我如何创建 json 以允许人们使用操作系统进行优化。

我试过类似的东西:

$record[$this->productdetails->map(function($data) {return [$data[‘name’]];})->toArray()]
= 
$this->productdetails->map(function($data) {return [$data[‘value’]]; })->toArray();

但在这个例子中我收到错误:

非法偏移类型

任何示例表示赞赏。我正在使用 Laravel Scout with Algolia。


基于用户@daniel-h 的方法,我更新了我的代码。

public function toSearchableArray()
{
    $record['name'] = $this->productName;
    $record['description'] = $this->productSpecification;
    $record['brand'] = $this->productBrand;
    $record['color'] = $this->color;
    $new_array = [];

    foreach ($this->productdetails as $record) {
        $new_array[$record['name']] = $record['value'];
    }
    return $record;
}

目前我正在接收 array_merge():参数 #1 不是数组


更新:

解决方案是:

// Add the product details to the array
    foreach ($this->productDetails as $detailsRecord) {
      $record[$detailsRecord->name] = $detailsRecord->value;
    }

我不太清楚你想要什么,但错误是因为你不能给一个数组作为 $record 的索引。应该看起来更像:$record[1] 或 $record['key'].

您是否正在寻找类似的东西:

$new_array = [];

foreach ($this->productdetails as $data) {
    $new_array[$data['name']] = $data['value'];
}