Algolia:如何使用以下数据创建优化列表
Algolia: How To Create a Refinement List with the following Data
我正在尝试使用以下产品数据创建优化列表:
- Table 1: 产品
- 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选项。
- 操作系统
- 语音激活
- 处理器速度
但我不知道如何构建数据来创建这样的优化列表:
例如,我如何创建 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'];
}
我正在尝试使用以下产品数据创建优化列表:
- Table 1: 产品
- 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选项。
- 操作系统
- 语音激活
- 处理器速度
但我不知道如何构建数据来创建这样的优化列表:
例如,我如何创建 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'];
}