До сих пор я всегда использовал полнотекстовый поиск вроде этого:
public function posts($search)
{
$searchString = $this->prepareString($search);
$posts = Post::select('*')->selectRaw('MATCH(name) AGAINST(? IN NATURAL LANGUAGE MODE) AS relevance', [$searchString])->whereRaw('MATCH(name) AGAINST(? IN NATURAL LANGUAGE MODE)', [$searchString])->orderBy('relevance', 'desc')->get();
return $posts;
}
И это отлично работает, однако теперь я использую этот пакет Laravel Translatable
. И поле name
не является частью сообщения, но оно является частью PostTranslation. Как я могу использовать вышеуказанный запрос, кроме как для перевода? Вот мои миграции:
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
Schema::create('post_translations', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->text('body');
$table->char('locale', 2)->index();
$table->integer('post_id')->unsigned();
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
$table->unique(['id', 'locale']);
});