3

假设我有一个表“用户”,我想用 Laravel Scout 搜索。它有很多属性,其中包括用户的爱好。

  • 用户的爱好不是直接放在users表中,
    而是通过关系表。因此,为表中的每个用户放置了一个 hobby-id users

  • 现在,当我搜索football,此内容时,Laravel
    Scout 并未对其进行索引。只有爱好的 idfootball被编入索引,但这当然不是我想要的。

任何人都知道我如何确保搜索football返回以足球为爱好的用户?

谢谢你的时间!

4

1 回答 1

2

您可以完全控制索引的确切内容,toSearchableArray()以便您可以按照以下方式进行操作

class User extends Model
{
    use Searchable;

    // ...

    public function toSearchableArray()
    {
        return array_merge($this->toArray(), [
            'hobby' => $this->hobby === null ? '' : $this->hobby->name;
        ]);
    }

    // ...

    public function hobby()
    {
        return $this->belongsTo(Hobby::class);
    }

}
于 2017-05-08T20:57:46.300 回答