【问题标题】:Laravel 6 groupBy to belongsTo relationshipLaravel 6 groupBy 到 belongsTo 关系
【发布时间】:2019-12-30 01:41:09
【问题描述】:

您好,我有 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

【问题讨论】:

  • 显示Post::with('category')->groupBy('category.title')->dd()的结果可能你的表名是categories

标签: php laravel laravel-translatable


【解决方案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();

【讨论】:

  • 不行,因为我用这个:github.com/spatie/laravel-translatable in title 我有一个 json。
  • @MafysGrif 您能否编辑您的问题并添加代码以显示您如何使用laravel-translatable 包?
【解决方案2】:

你可以这样使用:

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

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

【讨论】:

    猜你喜欢
    • 2018-03-08
    • 2019-05-26
    • 2020-01-15
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2018-08-06
    相关资源
    最近更新 更多