假设我有一个表“用户”,我想用 Laravel Scout 搜索。它有很多属性,其中包括用户的爱好。
用户的爱好不是直接放在
users
表中,
而是通过关系表。因此,为表中的每个用户放置了一个 hobby-idusers
。现在,当我搜索
football,
此内容时,Laravel
Scout 并未对其进行索引。只有爱好的 idfootball
被编入索引,但这当然不是我想要的。
任何人都知道我如何确保搜索football
返回以足球为爱好的用户?
谢谢你的时间!
假设我有一个表“用户”,我想用 Laravel Scout 搜索。它有很多属性,其中包括用户的爱好。
用户的爱好不是直接放在users
表中,
而是通过关系表。因此,为表中的每个用户放置了一个 hobby-id users
。
现在,当我搜索football,
此内容时,Laravel
Scout 并未对其进行索引。只有爱好的 idfootball
被编入索引,但这当然不是我想要的。
任何人都知道我如何确保搜索football
返回以足球为爱好的用户?
谢谢你的时间!
您可以完全控制索引的确切内容,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);
}
}