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