Laravel - 将ajax变量传递给模型

时间:2016-11-22 09:52:27

标签: php ajax laravel

在我的用户模型中,我有这个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>

1 个答案:

答案 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);
}