【问题标题】:Laravel Eloquent Update Affected Rows count always 1Laravel Eloquent 更新受影响的行数始终为 1
【发布时间】:2018-06-08 16:22:48
【问题描述】:

我是 laravel 的新手。我面临的问题是,

当我尝试使用 laravel 更新表中具有相同数据的列时 雄辩的受影响的行总是给我1。

这是我运行更新时正在运行的查询:

update `table` set `updating_column` = 1, `updated_at` = 2016-09-17 15:56:53;

在上面的查询中,laravel 更新updated_at 列以及我请求更新的列。

这就是为什么我总是受到 1 行的影响。

有没有办法在没有updated_at 列的情况下获得实际受影响的行。

编辑:

$modelobj = new Model();
$aftcnt = $modelobj->where(['ssnid'=>Session::get('SSNID')])
                   ->update([updating_column'=>1]);

当我总是刷新页面时,变量 $aftcnt 给我 1。

【问题讨论】:

  • 我认为这不是问题的原因。您可以发布更新表格的代码吗?我看不到任何条件
  • 查看编辑部分@jaysingkar
  • 这可能是因为您必须仅具有特定会话 ID 的值。 $modelobj->where(['ssnid'=>Session::get('SSNID')])->count() 有多少条记录
  • 该表仅包含 3 条记录,并且该 SSNID 仅包含 1 条记录。
  • 完全正确..这就是为什么您只选择一行时会影响 1 行。你到底想达到什么目的?

标签: php mysql laravel laravel-5 eloquent


【解决方案1】:

正如您已经注意到的,MySQL 报告有 1 行受到影响,因为该行被“触摸”,这意味着时间戳已更新。您可以通过以下方式解决您的问题;

在进行更新之前运行查询:

$aftcnt = $modelobj->where('ssnid', Session::get('SSNID'))
    ->whereNot('updating_column', 1)->count();

在禁用触摸的情况下运行更新:

$modelobj->where(['ssnid'=>Session::get('SSNID')])
    ->update(['updating_column'=>1], ['touch' => false]);

当您禁用触摸时,它不会尝试更改时间戳。

【讨论】:

    【解决方案2】:

    对于 Laravel 5

    您可能会看到获取受影响行的示例

    $ids=[10,20,30,40];
    
    $affectedRow=DB::update('update users set is_archive = 1, status=0 where id != ?', $ids);
    
    echo $affectedRow;
    exit;
    

    【讨论】:

      【解决方案3】:

      您需要通过添加where条件来添加条件强制更新的行

      `updating_column` = 0;
      

      喜欢这个

      update `table` set `updating_column` = 1, `updated_at` = `2016-09-17 15:56:53` where `updating_column` = 0;
      

      例子

      $modelobj = new Model();
      $aftcnt = $modelobj->where(
                    [
                      'ssnid' => Session::get('SSNID'), 
                      'updating_column' => 0
                    ])
                     ->update(['updating_column' => 1]);
      

      【讨论】:

        猜你喜欢
        • 2014-06-22
        • 2015-05-31
        • 2019-11-20
        • 2011-06-11
        • 1970-01-01
        • 2014-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多