Laravel take() возвращает пустую коллекцию для отношенийPhp

Кемеровские программисты php общаются здесь
Anonymous
Laravel take() возвращает пустую коллекцию для отношений

Сообщение Anonymous »

Я пытаюсь получить 4 категории всего с 4 статьями в laravel, используя этот код:
$categoryArticles = Category::whereHas('articles')->with(['articles' => function($q){
$q->select('id', 'title')->take(4);
}])->take(4)->get();

но для некоторых категорий он возвращает пустое отношение артиклей, и когда я удаляю из него take(4), код будет работать правильно:
$categoryArticles = Category::whereHas('articles')->with(['articles' => function($q){
$q->select('id', 'title');
}])->take(4)->get();

но мне нужно взять всего по 4 статьи для каждой категории.
в чем проблема?
Модель Article.php:
р>
public function categories() {
return $this->belongsToMany(Category::class, 'article_category');
}

Модель Category.php:
public function articles() {
return $this->belongsToMany(Article::class, 'article_category');
}

Таблицаarticle_category:
Schema::create('article_category', function (Blueprint $table) {
$table->unsignedBigInteger('article_id');
$table->unsignedBigInteger('category_id');
$table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
});


Подробнее здесь: https://stackoverflow.com/questions/787 ... lationship

Вернуться в «Php»