Многие ко многим, где - PullRequest
       5

Многие ко многим, где

0 голосов
/ 19 апреля 2019

Я хочу найти сообщение, которое имеет похожий тег только с идентификатором тега с номером идентификатора

Я пробовал это

$tags = Tag::find($id);
$post = Post::whereHas('tags', function($q) use ($id){
$q->where('id',$id);})->paginate(5);

    return view('tagdetail', compact('tags', 'post'));

, но вывод SQLSTATE [23000]: ограничение целостностинарушение: 1052 'Идентификатор столбца', где предложение неоднозначно (23000).

Я уже искал в Интернете и все еще не могу.

Tag.php

public function post()
    {
        return $this->belongsToMany('App\Post');
    }

Post.php

public function tags()
    {
        return $this->belongsToMany('App\Tag');
    }

контроллер

public function detailTag($id)
    {
        //i know this will get all the post with the tag id, but i want to paginate it too. 
        $tags = Tag::find($id);

        $post = Post::whereHas('tags', function($q) use ($id){
    $q->where('id',$id);
})->paginate(5);

        return view('tagdetail', compact('tags', 'post'));
    }

Ожидаемый результат: показать все сообщения с похожим тегом с разбивкой на страницы.

Фактический результат: SQLSTATE[23000]: Нарушение ограничения целостности: 1052 Идентификатор столбца, в котором предложение неоднозначно (23000)

1 Ответ

0 голосов
/ 19 апреля 2019

Я много раз сталкивался с этой проблемой.Он просто просит уточнить, с какой таблицей вы пытаетесь сравнить идентификатор, в posts или tags, поскольку обе таблицы имеют одинаковый ключ (id).Попробуйте это, я думаю, что это решит вашу проблему:

$post = Post::whereHas('tags', function($q) use ($id){
    $q->where('tags.id',$id); // ** call out the tags table specifically
})->paginate(5);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...