Laravel 6组通过属于归属关系

时间:2019-12-29 16:27:53

标签: php laravel laravel-translatable

你好,我的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 个答案:

答案 0 :(得分:1)

尝试Collection's group-by方法:

$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();

答案 1 :(得分:0)

您可以使用以下内容:

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

然后在刀片文件中,您可以找到每个选项卡,并按category_id查找名称