2017-05-08 59 views
2

假設我有一個表'用戶',我想用Laravel Scout完全搜索。它有很多屬性,其中包括用戶的愛好。如何將Laravel Scout和TNTSearch與關係數據庫結合使用?

  • 的用戶的愛好不是直接放置在users表, 而是由一個關係表。所以在 users表中爲每個用戶放置一個業餘愛好id。

  • 現在,當我搜索football這不是索引的Laravel
    童軍。只有興趣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); 
    } 

} 
+0

大線的東西一個完整的控制!這與一些小編輯:)。我用$ this替換了$ u並刪除了分號。在我的情況下,我用逗號替換它,以便能夠定義更多的關係。 爲此搜索了很長時間。非常感謝! – Menno

+0

很高興幫助。 :) – peterm