2017-05-08 9 views
2

私がLaravel Scoutで完全に検索したいテーブルの「ユーザー」があるとします。その中には多くの属性があり、その中にユーザーの趣味があります。Laravel ScoutとTNTSearchをリレーショナルデータベースと組み合わせて使用​​するには?

  • ユーザの趣味を直接usersテーブル、 ではなく、リレーショナルテーブルによって配置されていません。したがって、ホビーIDは usersテーブルに各ユーザーごとに配置されます。

  • ここでfootballを検索すると、これはLaravelによってインデックスされません
    スカウト。趣味の唯一のIDはfootballですが、それは私が望む方法ではなく、 です。

誰もが、私はfootball探しが趣味としてサッカーを持つユーザーを返すことを確認することができます方法を知っていますか?

ありがとうございました!

答えて

1

あなたは

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); 
    } 

} 
+0

グレートの線に沿って何かを行うことができるようにtoSearchableArray()でインデックス化されている正確に何を完全に制御を持っています!それはいくつかの小さな編集で働いた:)。 $ uを$ thisに置き換え、セミコロンを削除しました。私の場合は、コンマで置き換えて、より多くの関係を定義することができました。 これは長らく検索されました。どうもありがとう! – Menno

+0

喜んで助けました。 :) – peterm

関連する問題