首页 > 解决方案 > 我正在尝试使用 WhereAs 从两个带有 laravel 的表中获取记录

问题描述

我正在尝试从两个表中获取用户记录..销售表和用户表。

但是从 SALES 表中,我只想获取每个用户当月的销售额。

我已经从模型中合并了表,但是当我尝试使用此代码获取记录时,它会不断从 SALES 表中提取当前月份和上个月的销售额。

$myrecords = User::whereHas('sales', function($query) {
              $query->whereMonth('sales.created_at', Carbon::now()->month); 
}) 
->get();

请问我在这里做错了什么

标签: laravellaravel-5

解决方案


$users = User::whereHas('sales', function($query) {
    $query->whereMonth('sales.created_at', Carbon::now()->month);  
})->get();

这将获得上个月有销售的所有用户,所以如果你尝试说 ->with('sales'),它将获得上个月有销售的所有用户,以及他们曾经有过的所有其他销售。

如果您希望限制关系,则需要执行以下操作。

User::with(['sales' => function ($query) {
    $query->whereMonth('created_at', Carbon::now()->month);  
}])->get();

这将为您提供仅在本月发生销售的所有用户。


推荐阅读