Группа Laravel 6

Здравствуйте, у меня есть модель Post с отношением:

public function category()
{
    return $this->belongsTo(category::class);
}

Мне нужно показывать сообщения на каждой вкладке категории. Для этого мне нужно использовать groupBy. Когда я это сделаю:

$posts = Post::with('category')->groupBy('category.title')->get();

Я получаю ошибку:

Column not found: 1054 Unknown column 'category.title'.

Почему? Как я могу вернуть свои сообщения с ключом названия категории?

Для многоязычного я использую этот пакет: https://github.com/spatie/laravel-translatable

2 ответа

Решение

Попробуйте метод группировки Collection:

$posts = Post::with('category')->get()->groupBy('category.title')->all();

Вы можете передать обратный вызов, чтобы вернуть значение, которое вы хотите использовать для группы (как вы упомянули, вы используете пакет laravel-translatable):

$posts = Post::with('category')->get()->groupBy(function ($post, $key) {
    return $post->category->getTranslation('title', 'fr');
})->all();

Вы можете использовать что-то вроде этого:

$posts = Post::all()->groupBy('category_id')->get();

а затем в файлах лезвия вы можете просмотреть каждую вкладку и найти имя по category_id

Другие вопросы по тегам