Как использовать 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);
    }

}
Другие вопросы по тегам