【问题标题】:Laravel save() is not update recordLaravel save() 不是更新记录
【发布时间】:2016-12-20 05:19:42
【问题描述】:

如果记录已经存在,我正在尝试更新数据库表中的记录。如果记录不在数据库表中,则插入新记录。

我已经为此编写了以下代码

DB::enableQueryLog();
            $user->userCommission()->save(new UserCommission($input['commission']));
            dd(DB::getQueryLog());

当 EnableQueryLog 总是显示插入查询,如果记录已经在表中。

这是我的查询..

array:1 [▼
  0 => array:3 [▼
    "query" => "insert into `user_commissions` (`created_by`, `status_id`, `percent`, `user_id`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?)"
    "bindings" => array:6 [▼
      0 => "1"
      1 => "1"
      2 => "0.10"
      3 => 21
      4 => "2016-08-13 08:07:45"
      5 => "2016-08-13 08:07:45"
    ]
    "time" => 2.57
  ]
]

在上面的查询中,虽然Save()向数据库中插入了记录,但表中已经有21条记录。

这段代码我哪里错了? 我可以对表应用唯一键吗?

【问题讨论】:

    标签: laravel laravel-5.2 laravel-5.1


    【解决方案1】:

    需要至少一个唯一的列来查找或更新表记录

    $userCommission = UserCommission::firstOrNew(array('created_by' => 1));
    $userCommission->status_id = 1;
    $user()->userCommission()->save($userCommission);
    

    【讨论】:

      【解决方案2】:

      有一个替代的方法步骤来检查 this.update_at 和 created_at 将被 laravel 默认插入

      userCommission::updateOrCreate([
                                      'user_id' => 21
                                      ],[
                                      'created_by' => 1,
                                      'status_id' => 1,
                                      'percent' => "0.10",
                                      'user_id' => 21,
                                  ]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-12
        • 1970-01-01
        • 2020-05-30
        • 2022-01-12
        • 2020-09-24
        • 1970-01-01
        相关资源
        最近更新 更多