【问题标题】:Laravel get highest value of each columnLaravel 获取每列的最高值
【发布时间】:2017-12-17 23:57:36
【问题描述】:

我使用的是 Laravel 5.5,我想知道如何在一个查询中获得每一列的最高值?

可以吗,还是要一一查询?

我试过下面的代码。

DB::table('family')->max('children')->max('salary');

当我尝试DB::table('family')->max('children') 时,效果很好。但是当我尝试DB::table('family')->max('children')->max('salary') 时,我得到以下错误

在字符串上调用成员函数 max()

【问题讨论】:

  • 到目前为止你尝试过什么?请参阅本指南,了解如何在 Stack Overflow 上提问:Link here
  • @BlunderingPhilosopher 我什么都没尝试,因为我不知道该怎么做,只是问了个问题

标签: php mysql laravel laravel-5


【解决方案1】:

您可以通过单个查询获得。

$result = DB::table("family as f")
->select([DB::raw('MAX(f.children) AS children_max'),DB::raw('MAX(f.salary) AS salary_max')])
->groupBy('f.id')
->first();

或者使用单独的->max() 方法。

$family = DB::table('family');
$max_children = $family->max('children');
$max_salary = $family->max('salary');

other answerLaravel Docs 中获取更多详细信息

【讨论】:

  • 你是英雄,效果很好,但是你更喜欢哪种方法来获得更高的速度?
  • 虽然第二种方案更干净但第一种更快,根据你的使用情况使用,首选第一种。
  • 我没有投反对票,但我只是建议你,总是添加你的尝试,我在你的问题中添加你的评论
  • @user2468 好的,我明白了,再次感谢您
【解决方案2】:

用你的 eloquent 加上max() 得到每列值的最大值。

ModelName::select(DB::raw('MAX(column1) AS colum1'),DB::raw('MAX(colum2) AS colum2'))->get();

检查这个 laravel docs

编辑: 您可以使用 laravel 中的查询生成器来完成。

【讨论】:

  • 当我尝试 DB::table('family')->max('children) 时效果很好,但是当我尝试 DB::table('family')->max('children )->max('salary') 结果是“Call to a member function max() on string”
猜你喜欢
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 2019-07-01
  • 2023-01-11
相关资源
最近更新 更多