【问题标题】:Laravel eloquent group by 与 3 表连接
【发布时间】:2022-01-23 16:48:16
【问题描述】:

我已经解决了几个小时,但不知道如何解决它。

表结构是:

计划:

  • 身份证
  • 标题

特点:

  • 身份证
  • 标题

功能条款:

  • 身份证
  • 文字
  • plan_id
  • feature_id

我想结束的是:

[{
  "plan_id": 1,
  "title": "Plan 1",
  "features": [
    {
      "title": "Feature 1",
      "term": "Term 1"
    },
    {
      "title": "Feature 2",
      "term": "Term 2"
    } 
  ]
},{
  ...
}]

任何帮助将不胜感激

问候, 安迪

【问题讨论】:

  • Plans和Features有ManytoMany关系还是OnetoMany关系?
  • Plans->FeatureTerms = 1:many Features->FeatureTerms = 1:1 我也刚刚解决了这个问题,但还是感谢您的回复。

标签: laravel eloquent laravel-8


【解决方案1】:

这比我想象的要简单:

$plans = Plan::with("featureTerms.feature")->get();

【讨论】:

    【解决方案2】:

    您应该像这样在Plan 上定义Has Many Through 关系

    public function features()
    {
        return $this->hasManyThrough(Features::class, FeatureTerms::class);
    }
    

    定义关系后,您可以返回带有像这样急切加载的功能的计划

    $plan = Plan::with(["features"])->first();
    

    这将返回具有相关功能的第一个计划

    【讨论】:

      【解决方案3】:

      您可以按三个表连接分组,只需输入您想要分组的列名,您想要多少列:

      $query->groupBy(['column_name','column_name'...])->get();
      

      【讨论】:

        猜你喜欢
        • 2017-07-31
        • 1970-01-01
        • 1970-01-01
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多