【问题标题】:cannot calculate data correctly according to input based on the same category不能根据同类别的输入正确计算数据
【发布时间】:2019-03-28 08:10:53
【问题描述】:

型号

public static function findOrCreate($plan_id, $data)
{
    $fromDate = Carbon::now()->subDay()->startOfWeek()->toDateString();
    $nowDate = Carbon::now()->today()->toDateString();

    $spent_time = SpentTime::where('plan_id', $plan_id)->first();
    $task_category = $spent_time->task_category;

    if (is_null($spent_time)) {
        return static::create($data);
    }else{

        $spent_time->spent_time   = SpentTime::where('task_category',$task_category)
                                    ->sum('daily_spent_time', $spent_time->daily_spent_time , $fromDate);
        $spent_time['spent_time'] = $spent_time->spent_time + $spent_time->daily_spent_time;

        $spent_time->percentage   = SpentTime::where('task_category',$task_category)
                                    ->sum('daily_percentage', $spent_time->daily_percentage, $fromDate);
        $spent_time['percentage'] = $spent_time->percentage  + $spent_time->daily_percentage;
        return $spent_time->update($data);
    }
}

新建同类别的数据,输入数据值,应该可以正确计算数据,但是这个不行

计算与输入值不匹配

【问题讨论】:

    标签: php sum laravel-query-builder calculated-field laravel-5.7


    【解决方案1】:

    型号

    public static function findOrCreate($plan_id, $data)
    {
        $spent_time = static::where('plan_id', $plan_id)->first();
        $task_category = $spent_time->task_category;
    
        if (is_null($spent_time)) {
            return static::create($data);
        }else{
            $spent_time['spent_time'] = $spent_time->spent_time + $spent_time->daily_spent_time;
            $spent_time['percentage'] = $spent_time->percentage  + $spent_time->daily_percentage;
    
        return $spent_time->update($data);
        }
    }
    

    控制器

    public function store(Request $request)
    {      
        $spent_time = SpentTime::findOrCreate($request->get('plan_id'), [
            'plan_id' => $request->get ('plan_id'),
            'daily_spent_time' => $request->get ('daily_spent_time'),
            'daily_percentage' => $request->get ('daily_percentage'),
            'reason' => $request->get ('reason'),
        ]);
    
        return redirect()->route('real.index', compact( 'spent_time'));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-29
      • 2020-08-02
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多