当前位置: 首页 > 知识库问答 >
问题:

Laravel雄辩查询从多个表中选择列

公冶桐
2023-03-14

我有一个Laravel后端和一个VueJS前端。

我试图在一个具有hasOne关系的模型上生成一个查询,但只从关系中选择特定的列,做一个sum和一个group By。

    null
public function contractsByYear() {
   return Contract::where('CONTRACT_TYPE','LIKE','SP-%')->with(['AdditionalInfo' => function($query) {
       $query->selectRaw('MONTH(START_DATE) as Month')->whereYear('START_DATE','2019');
   }])->sum('CONTRACT_PRICE')->groupBy('Month');
}
MONTH | TOTAL
1     | 500
2     | 233
3     | 800
etc

共有1个答案

边国安
2023-03-14

收集方法可能会做你想做的事情

public function contractsByYear()
{
    return Contract::select('id', 'CONTRACT_PRICE') /* Only really need the id (or whatever else is the pk) and the price */
    ->where('CONTRACT_TYPE','LIKE','SP-%')
    ->with(['AdditionalInfo' => function($query) {
        $query->select('id', 'contract_id')         /* Only really need the id (or whatever else is the pk), and the Contract fk*/
        ->selectRaw('MONTH(START_DATE) as Month')   /* Aggregate the month */
        ->whereYear('START_DATE','2019');
    }])
    ->get()
    // From this point on, it's a Collection
    ->groupBy('AdditionalInfo.*.Month')             /* It's either this or 'AdditionalInfo.Month' */
    ->map(function($item, $key) {
        return [
            'month' => $key,
            'total' => $item->sum('CONTRACT_PRICE')
        ];
    });
}
 类似资料:
  • 在我的应用程序中,我更新了从一对多到多对多的关系,我试图找出一种持久化关联功能的方法。 假设我有两个相关的表,例如狗和主人。如果我有一系列的主人,并且我正试图为这些主人获取一份狗的id列表,我应该如何雄辩地做到这一点? 这里也提出了类似的问题:https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-da

  • 我正在使用Laravel和它提供的雄辩的ORM,但我正在努力选择我需要的数据。我有两种型号 我该怎么做?

  • 我正在尝试使用Laravel雄辩的模型查询多个表,这些模型具有一对一、一对多和多对多的关系。 我有一个表,一个表,一个表和一个透视表。 每个表单有一个品牌和一个用户: 品牌没有任何外键: 用户没有任何外键: 有一个数据透视表可以创建多对多的关系,用于创建拥有许多用户(如品牌成员)的品牌组: 我试图通过直接所有权()或品牌成员身份获取属于用户的所有表单,通过多对多透视表获取用户所属的所有品牌的所有表

  • 我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?

  • 如何使用laravel雄辩的ORM关系在多个表中发出一个插入请求。即 表1:用户 id 姓名 电子邮件 表2:员额 id 表3:图像 id 用户id 邮政id 图像名称 关系 表id引用了其他两个表中的 表与

  • 假设我在表中有7列,我想只选择其中的两列,类似这样 在laravel雄辩的模型中,它可能是这样的 但我猜这个表达式将选择id等于1的所有列,我只需要两列(名称、姓氏)。如何只选择两列?