【问题标题】:How to add one more column in the select using Laravel Eloquent如何使用 Laravel Eloquent 在选择中添加一列
【发布时间】:2019-11-19 09:13:54
【问题描述】:

我正在尝试使用 Laravel Eloquent 进行查询。我想按level 列对结果进行分组,在total 别名中计算结果,最后,将每个结果的id 带给我。我做错了什么?

$fodas = Foda::groupBy('level')
             ->select('level', DB::raw('count (*) as total'))
             ->get();

结果是一个只给我带来 level 和 total 字段的集合。

【问题讨论】:

  • 如果你想要结果中的 id,你需要选择id。如果您在 mysql 中使用严格模式对 sql 端进行分组,您的 group by 子句和 select 子句将需要引用相同的列。

标签: sql laravel eloquent


【解决方案1】:

您会在许多 laravel 外观中看到这种模式。如果您正在处理“某事之一”,在本例中为列,则传递一个字符串,如果您正在处理许多事物,则传递一个数组。

这就是*level 都有效的原因。因为*被识别为一列,并在mysql内部扩展以匹配每一列。

这也是为什么当你尝试查询'level,column2,column3'时它不起作用的原因,因为这个字符串不是有效的列名,所以你必须传递一个包含你想要使用的所有列的数组.

   $fodas = Foda::groupBy('level')
      ->select(['level','other','column'], DB::raw('count (*) as total'))
      ->get();

正如我之前所说,这适用于许多 laravel 外观:

Facade::function('one_thing');
//or
Facade::function(['thing1','thing2','thing3']);
//or even this, for some cases
Facade::function('thing1','thing2','thing3');

【讨论】:

  • 请确保添加更多关于答案的详细信息。只是添加代码没有任何意义。
  • 你们说的都对。我很着急,急忙回答。感谢您的意见。
猜你喜欢
  • 2019-01-01
  • 1970-01-01
  • 2018-12-07
  • 2015-01-24
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
  • 2013-09-08
相关资源
最近更新 更多