按相同类别创建新数据时无法保存数据

Posted

技术标签:

【中文标题】按相同类别创建新数据时无法保存数据【英文标题】:can't save data, when create new data by same category 【发布时间】:2019-03-27 11:30:49 【问题描述】:

型号

错误: “数组到字符串的转换(SQL:更新spent_times设置updated_at=2018-10-23 09:16:43,spent_time=16,percentage=70,task_category=测试其中id= 1) ◀"

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->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'] = $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'] = $new_spent_time->percentage  + $spent_time->daily_percentage;
        $new_spent_time->save();
        return $spent_time->update($data);
    

为什么只有第一个 ID?

【问题讨论】:

第一个 ID 是什么?请澄清你在说什么。至于错误,这意味着您正在尝试在字符串中打印数组,这不是合乎逻辑的事情。但我们不知道您的哪些变量是数组。 `$new_spent_time = SpentTime::first();'表中的 id_spend_times 它只是第一个 ID,因为您使用 SpentTime::first(); 获取它并且它正在更新 @LeenaPatel 会影响保存吗? 是的,当你已经在使用update()时,你不需要使用save() 【参考方案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);
    

【讨论】:

以上是关于按相同类别创建新数据时无法保存数据的主要内容,如果未能解决你的问题,请参考以下文章

创建具有相同类别的新数据时如何按类别计算数据

无法通过 NSCoding 保存表数据

无法在 prod 配置文件中使用 postgreSQL 保存数据

将所有列保存在一个表中与按数据类别保存在单独的表中

js 在页面卸载时保存数据无法按预期工作

保存查询和优化数据库