2017-05-08 74 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