Свойство [task_category] не существует в этом экземпляре коллекции.

введите здесь описание изображения

Модель в Ларавеле

«Свойство [task_category] не существует в этом экземпляре коллекции».

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

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

    if (is_null($spent_time)) {
        return static::create($data);
    }else{
    $new_spent_time = SpentTime::get();
    $new_spent_time->task_category = (['{task_category}' => $new_spent_time->task_category, 
                                        '{daily_spent_time}' => $new_spent_time->daily_spent_time,
                                        '{daily_percentage}' => $new_spent_time->daily_percentage,
                                        '{spent_time}' => $new_spent_time->spent_time,
                                        '{percentage}' => $new_spent_time->percentage, $new_spent_time->task_category]);

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

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

person Lia nur fadilah    schedule 19.10.2018    source источник
comment
У вас есть поле task_category в переносе таблицы spenttime?   -  person thisiskelvin    schedule 19.10.2018
comment
@thisiskelvin Да, конечно   -  person Lia nur fadilah    schedule 19.10.2018
comment
Для чего предназначена ваша функция SpentTime::get()? Это для получения первого экземпляра? Создать новый? если уж достать первым, то используй ::first().   -  person thisiskelvin    schedule 19.10.2018
comment
@thisiskelvin спасибо, но есть еще одна проблема, при сохранении создаются новые данные, данные, которые имеют ту же категорию, еще не могут быть рассчитаны, прошу помощи. пожалуйста, вы можете увидеть ссылку stackoverflow.com/questions/52865862/   -  person Lia nur fadilah    schedule 19.10.2018
comment
Заголовок stackoverflow.com/questions/52884984/   -  person Lia nur fadilah    schedule 19.10.2018
comment
я проверю это   -  person thisiskelvin    schedule 19.10.2018
comment
Обновите вопрос и с этим ответом.   -  person thisiskelvin    schedule 19.10.2018
comment
@thisiskelvin хорошо, спасибо   -  person Lia nur fadilah    schedule 19.10.2018


Ответы (2)


Я решил эту проблему, используя first() вместо get():

$new_spent_time = SpentTime::first();
person Lia nur fadilah    schedule 19.10.2018

Модель

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

    $spent_time = static::where('plan_id', $plan_id)->first();
    if (is_null($spent_time)) {
        return static::create($data);
    }else{
        $new_spent_time = SpentTime::first();
        $task_category = $new_spent_time->task_category;

        $new_spent_time->task_category = (['{task_category}' => $task_category, 
                                        '{daily_spent_time}' => $new_spent_time->daily_spent_time,
                                        '{daily_percentage}' => $new_spent_time->daily_percentage,
                                        '{spent_time}' => $new_spent_time->spent_time,
                                        '{percentage}' => $new_spent_time->percentage, $new_spent_time->task_category]);

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

        $new_spent_time->percentage = $new_spent_time::where('task_category',$task_category)
                                    ->sum('daily_percentage', $new_spent_time->daily_percentage, $fromDate);
        $new_spent_time['percentage'] = (int)$new_spent_time->percentage  + $spent_time->daily_percentage;

        return $spent_time->update($data);
    }
}
person Lia nur fadilah    schedule 19.10.2018