【问题标题】:Laravel Increment by Multiplying Two ColumnsLaravel 通过乘以两列来增加
【发布时间】:2018-06-26 22:35:58
【问题描述】:

尝试做类似的事情:

$variance = mt_rand (2, 12) / 10;
DB::table('resources')->increment('grainQuant', 'grainLQ' * 'grainPM' * $variance));

所有三个值都在同一行,我想遍历每一行。下面的工作正常,但我不知道如何在其他列值中相乘(并更新每一行)。

$variance = mt_rand (2, 12) / 10;
DB::table('resources')->increment('grainQuant', $variance));  

【问题讨论】:

    标签: laravel eloquent increment


    【解决方案1】:

    也许你可以使用原始 sql:

    DB::update('UPDATE "resources" SET "grainQuant" = "grainLQ" * "grainPM" * ?', [$variance]);
    

    甚至

    DB::update("UPDATE \"resources\" SET \"grainQuant\" = \"grainLQ\" * \"grainPM\" * $variance");
    

    【讨论】:

    • 无法让其中任何一个工作,甚至无法使用DB::update('update resources set landQuant = 1 where id = 1');
    • 错误是什么? DB::select('SELECT * FROM resources'); 会给你所有的结果吗?
    • 这很奇怪SQLSTATE[42703]: Undefined column: 7 ERROR: column "landquant" of relation "resources" does not exist,但它确实存在......
    • 刚刚查找并根据stackoverflow.com/questions/14189254/… postgresql 小写非引号字符串,我已经更新了我的答案。但是,如果它仍然不起作用,这更像是一个 postgresql 问题,除非有人知道在 laravel 中这样做的方法
    • @fubar 我从来没有使用过 postgresql,这是他们在上面的链接中使用的。如果您觉得它们更合适,请随时编辑我的答案
    【解决方案2】:

    你可以试试下面的代码

    $variance = mt_rand (2, 12) / 10;
    DB::table('resources')->increment('grainQuant', DB::raw("grainLQ * grainPM * ".$variance));
    

    这仅在“grainLQ”和“grainPM”是资源表中的列时才有效

    【讨论】:

      猜你喜欢
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多