Как передать параметр в предложение whereHas () в Laravel - PullRequest
0 голосов
/ 08 июля 2019

Я запросил модель Category, чтобы получить все идентификаторы, где 'name', '=', $name использовать для запроса модели Post, но я получаю ошибку.

public function getList($name)
{
    $category_id = Category::where('name', '=', $name)->first()->id;

    $posts = Post::whereHas('category', function ($q) use ($category_id) {
        $q->where('id', '=', $category_id);
    })->paginate(12);

    return view('blog.index')->withPosts($posts)->withName($name);
}

Вот моя ошибка.

ErrorException в строке Builder.php 877: compact (): неопределенная переменная: оператор

1 Ответ

0 голосов
/ 08 июля 2019

Если вы установите все так же, как я, все будет работать хорошо!

Соотношение между таблицами постов и категориями - ManyMany.Таким образом, вам нужно имя сводной таблицы category_post для хранения отношений данных 2 таблицы:

Schema::create('category_post', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->timestamps();
    $table->bigInteger('category_id')->unsigned();
    $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
    $table->bigInteger('post_id')->unsigned();
    $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});

В модели Post:

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

Модель категории:

class Category extends Model
{
    public function posts(){
        return $this->belongsToMany(Category::class,'category_post','category_id','post_id');
    }
}

ИYourController:

public function getList($name)
{
    $category_id = Category::where('name', '=', $name)->first()->id;

    $posts = Post::whereHas('categories', function ($q) use ($category_id) {
        $q->where('category_id', '=', $category_id);
    })->paginate(12);

    return view('show')->withPosts($posts)->withName($name);
}

Удачного кодирования!Спроси меня, если тебе нужно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...