Laravel 4 Сообщение и категории

Я новичок в ларавеле. Мне нужно, чтобы на моем домашнем блоге отображались 3 сообщения для каждой категории и просто показывались 4 категории.

Я делаю в своем HomeController

  $categories = Category::with(['posts' => function($query){
      $query->orderBy('published_at', 'DESC')->take(3)->get();
  }])->take(4)->get();

В моей модели

//post models
     public function category(){
    return $this->belongsToMany('Category', 'post_categories', 'post_id', 'category_id');
    }

в моей модели категории

    public function posts(){
       return $this->hasMany('Post');
   }

Но когда я иду, на мой взгляд, он просто показывает 3 последних сообщения только для 1 категории и показывает 1 сообщение для другого.


person nicolassiuol    schedule 07.12.2015    source источник
comment
Используете ли вы сводную таблицу «post_categories» для связи «многие ко многим» между таблицами «категория» и «публикация»?   -  person Jay Dhameliya    schedule 08.12.2015
comment
нет сводной таблицы с категорией и постом   -  person nicolassiuol    schedule 08.12.2015


Ответы (1)


Код для вашего контроллера:

// declare a variable and an array
$catid = null;
$posts = [];

// get four categories
$categories = Category::take(4)->get();

foreach($categories as $category){
  //foreach of the four categories, get the category id
  $catid = $category->category_id;

  //add three posts of each of those categories to the $posts array
  $posts[] = Category::where('category_id', $catid)->take(3)->get();

}

В вашем массиве $posts должно быть все, что вам нужно.

person Jay Geeth    schedule 07.12.2015
comment
у меня нет сводной таблицы только в публикации внешнего ключа category_id, поэтому, когда я делаю myforeach($categories as $category){ // foreach из четырех категорий, получаю идентификатор категории $category_id = $category-›$category_id; // добавляем по три сообщения каждой из этих категорий в массив $posts $posts[] = Category::where('category_id', $category_id)-›take(3)-›get(); } у меня есть сообщение об ошибке Неопределенная переменная: category_id - person nicolassiuol; 07.12.2015
comment
И для Category::find(4) вернуть только мой идентификатор категории номер 5, а не вернуть 4 категории - person nicolassiuol; 07.12.2015
comment
Неопределенная переменная: category_id я не понимаю, почему у меня эта проблема - person nicolassiuol; 08.12.2015
comment
у вас все еще есть эта проблема? - person Jay Geeth; 08.12.2015
comment
да, у меня проблема с category_id undefined, я не знаю, почему - person nicolassiuol; 08.12.2015
comment
Вы объявили переменную, как указано? $category_id; ? - person Jay Geeth; 08.12.2015
comment
да, я указал $categoryid, как в верхнем ответе - person nicolassiuol; 08.12.2015
comment
попробуйте объявить его в цикле for; foreach($categories as $category){ $category_id; } - person Jay Geeth; 08.12.2015
comment
Хорошо, я попробую И приду после, чтобы сказать, все ли в порядке - person nicolassiuol; 08.12.2015
comment
правда, добавление объявления переменной внутри цикла for не будет работать, но я думаю, что это должно работать, когда вы объявляете $category_id как глобальную переменную. я сделал некоторые изменения в коде. проверьте, работает ли он - person Jay Geeth; 08.12.2015