【问题标题】:how to use "groupBy" with relationship Laravel如何在关系 Laravel 中使用“groupBy”
【发布时间】:2020-08-27 08:29:43
【问题描述】:

我需要按日期进行分组。问题是两个表“看板”和“apontamentos”。

类似:看板::with('apontamento')->get()->groupBy('dataApontamento'); 属性错误

enter image description here

我已经尝试了所有方法,在模型中使用“groupBy”。需要知道如何在控制器中分组并执行“foreach”

我最接近的就是这样:

$days = Kanban::with('apontamentos')->get()->groupBy(function ($val) {
      return $val->dataApontamento;
  });
  // dd($days);

  foreach ($days as $day => $appointments) {
    echo '<h2>'.$day.'</h2><ul>';
    foreach ($appointments as $appointment) {
        echo '<li>'.$appointment->atividade.'</li>';
    }
    echo '</ul><br>';
  }

更清晰的例子:

看板

标题:等待服务

Apontamentos

日期 05/05

项目1

项目2

项目3

日期 06/05

项目1

项目2

项目6

项目7

看板

标题:待定

配菜

日期:08/05

项目9

项目8

项目4

看板

标题:看板

标题:等待服务

配菜

日期:09/05

项目1

项目1

项目1

项目1

10/05

项目1

项目1

项目1

项目1

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    试试这个!

    Kanban::with(['apontamentos' => function($query){
        $query->groupBy('dataApontamento');
    }])->get();
    

    【讨论】:

    • 感谢@Alex 的回复,给出了这个错误。 SQLSTATE[42000]:语法错误或访问冲突:1055 'company.apontamentos.id' 不在 GROUP BY 中(SQL:select * from apontamentos where apontamentos.kanban_id in (7, 10, 11, 12) 分组dataApontamento)
    • 你必须把 company.apontamentos.id 放在 group by 或者你必须告诉 laravel 对你必须去 config/database 的数据库使用严格模式 false 并在 mysql 中放这个'严格' => 假
    • 同样的错误...'prefix' =&gt; '', 'prefix_indexes' =&gt; true, 'strict' =&gt; false, 'engine' =&gt; null,
    • 如果你的 mysql 的 stict 模式使用 SELECT @@GLOBAL.sql_mode 失败,你可以通过 SET @@GLOBAL.sql_mode=''" 来改变它
    • 怎么解释更好?我使用 xampp
    猜你喜欢
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2020-03-05
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多