0

我正在尝试向所有用户展示他们在日期之间的点值。点值需要介于开始日期和结束日期范围之间。我遇到的问题是我有一个ActivityName模型加入到ActivityPoints显示类别名称。我一直都知道在连接中添加一个 where 子句来处理这样的事情,但我不确定连接关系会落在哪里。

$SalesReps = User::with('ActivityPoints', function ($query) use ($StartDate, $EndDate) {
                $query->where('created_at', '>=', $StartDate);
                $query->where('created_at', '<=', $EndDate);
            }, 'ActivityPoints.ActivityName')
            ->whereIn('id', $SalesRepsData->pluck('id')->toArray())
            ->get();

这将返回错误: mb_strpos() expects parameter 1 to be string, object given

显然,我可以这样做:

$SalesReps = User::with('ActivityPoints', 'ActivityPoints.ActivityName')
            ->whereHas('ActivityPoints', function ($query) use ($StartDate, $EndDate) {
                $query->where('created_at', '>=', $StartDate);
                $query->where('created_at', '<=', $EndDate);
            })
            ->whereIn('id', $SalesRepsData->pluck('id')->toArray())
            ->get();

但它不会向用户显示零分(空值)。

谢谢!

4

3 回答 3

0

WhereBetween选项可以工作

$SalesReps = User::with('ActivityPoints', 'ActivityPoints.ActivityName')
    ->whereHas('ActivityPoints', function ($query) use ($StartDate, $EndDate) {
        $query->whereBetween('created_at', array($StartDate,$EndDate));
      })
    ->whereIn('id', $SalesRepsData->pluck('id')->toArray())
    ->get();
于 2018-03-02T15:54:03.153 回答
0

试试下面的代码。

$SalesReps = User::with('ActivityPoints', function ($query) use ($StartDate, $EndDate) {
                $query->where('created_at', '>=', $StartDate)
                ->where('created_at', '<=', $EndDate);
            }, 'ActivityPoints.ActivityName')
            ->whereIn('id', $SalesRepsData->pluck('id')->toArray())
            ->get();
于 2018-03-02T15:55:48.550 回答
0

在它周围添加了一个括号,它起作用了..奇怪。

     $SalesReps = User::with(['ActivityPoints' => function ($query) use ($StartDate, $EndDate) {
            $query->where('created_at', '>=', $StartDate);
            $query->where('created_at', '<=', $EndDate);
        }], 'ActivityPoints.ActivityName')
        ->whereIn('id', $SalesRepsData->pluck('id')->toArray())
        ->get();
于 2018-03-02T16:24:26.047 回答