Laravel поиск много ко многим красноречивым получить результат с нумерацией страниц - PullRequest
0 голосов
/ 04 октября 2019

У меня есть древовидная таблица:

  1. сообщений
  2. категорий
  3. теги

поля сообщений: заголовок и текстполе категорий: заголовок поле тегов: заголовок

отношение между сообщениями и категориями много-много. отношение между постами и тегами много ко многим.

Я хочу найти ключевое слово для поиска в заголовке или тексте поста (например), или в заголовке категории поста, или в заголовке тегов поста, используя eloquent и нумерацию страниц.

Как мне это сделать?

class Post extends Model
{
    public function categories()
    {
        return $this->belongsToMany(Category::class);
    }

    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
}

class Category extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class);
    }
}

class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class);
    }
}


1 Ответ

0 голосов
/ 25 октября 2019

Я думаю, что это лучший запрос:


$posts = Post::where('title','LIKE','%'.$keyword.'%')
        ->orWhereHas('tags', function($query) use ($keyword) {
            $query->where('title', $keyword);
        })
        ->orWhereHas('categories', function ($query) use ($keyword) {
            $query->where('title', $keyword);
        })->orderBy('id', 'DESC')->paginate(10)->appends('keyword', $keyword);
...