在我的用户模型中,我有这个getter方法:
public function getWorkedHoursInRangeAttribute($start, $end)
{
$sum = [];
foreach($this->workedTimes as $item) {
if( ($item->start_time->gt($start)) && ($item->end_time->lt($end)) ){
array_push($sum, ceil($item->end_time->diffInMinutes($item->start_time->addMinutes($item->break_time_min))/60 * 4) / 4 );
}
}
return array_sum($sum);
}
在我看来,我发布了这个
function(start, end) {
$.ajax({
type: "POST",
url: '/users/workedhours',
headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
data: {"start": start.format("DD.MM.YYYY HH:mm"), "end": end.format("DD.MM.YYYY HH:mm")},
我在我的控制器中有这个
public function getWorkedHoursForRange(Request $request)
{
$start = Carbon::parse($request->start);
$end = Carbon::parse($request->end);
return response()->json(['msg' => $start], 200);
}
和这条路线:
Route::post('users/workedhours', 'UsersController@getWorkedHoursForRange');
如何将这个开始和结束变量从ajax转换到我的Model方法并进行计算?
我可能需要在我的控制器中做一些事情......但是什么?
更新:
在视图中我有我的表的这个foreach循环:
<tbody>
@foreach ($users as $user)
<tr>
<td><a href="{{ url('/user', $user->id) }}">{{ $user->name }}</a></td>
<td>{{ $user->total_time_current_year }}</td>
<td>{{ $user->total_time_last_year }}</td>
<td>{{ $user->total_time_current_month }}</td>
<td>{{ $user->total_time_last_month }}</td>
<td>here i need the calculation for date range</td>
</tr>
@endforeach
</tbody>
答案 0 :(得分:1)
模型中需要两个属性:开始和结束。这样,您就可以在访问者中访问它们。
protected $start;
protected $end;
public function getWorkedHoursInRangeAttribute()
{
$sum = [];
foreach($this->workedTimes as $item) {
if( ($item->start_time->gt($this->start)) && ($item->end_time->lt($this->end)) ){
array_push($sum, ceil($item->end_time->diffInMinutes($item->start_time->addMinutes($item->break_time_min))/60 * 4) / 4 );
}
}
return array_sum($sum);
}
您可以向控制器发出AJAX调用,遍历用户,为每个用户模型设置开始和结束变量,并将所有用户返回到视图。在那里,您可以访问您的访问者属性。
public function getWorkedHoursForRange(Request $request)
{
$start = Carbon::parse($request->start);
$end = Carbon::parse($request->end);
$users = App\User::all();
foreach($users as $user) {
$user->start = $start;
$user->end = $end;
}
return response()->json(['users' => $users], 200);
}