我尝试在日期之间显示所有用户的点值。点值需要在开始日期和结束日期范围之间。我遇到的问题是我有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();
但它不会向用户显示零点(空值)。
谢谢!
答案 0 :(得分: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();
答案 1 :(得分:0)
请尝试以下代码。
NotificationCenter
答案 2 :(得分: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();