Как использовать Laravel Scout & TNTSearch в сочетании с реляционными базами данных?
Допустим, у меня есть таблица "пользователи", которую я хочу полностью найти с помощью Laravel Scout. У него много атрибутов, среди которых хобби пользователя.
Хобби пользователя не находится прямо в
users
таблица, но с помощью реляционной таблицы. Таким образом, для каждого пользователя вusers
Таблица.Теперь, когда я ищу
football
это не индексируется Laravel
Scout. Только идентификатор хоббиfootball
индексируется, но это, конечно, не так, как я хочу.
Кто-нибудь знает, как я могу убедиться, что поиск football
возвращает пользователей, у которых футбол в качестве хобби?
Спасибо за ваше время!
1 ответ
Вы имеете полный контроль над тем, что именно индексируется через 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);
}
}