Laravel:添加到列中的现有字段数据

Posted

技术标签:

【中文标题】Laravel:添加到列中的现有字段数据【英文标题】:Laravel: Addition to an existing field data in a column 【发布时间】:2013-08-14 11:17:33 【问题描述】:

请问我该如何用 eloquent 表达这个 php mysql 更新代码

mysql_query("UPDATE `some_table` SET `value` = `value` + 1000 WHERE `id` = 1");

mysql_query("UPDATE `some_table` SET `value` = `value` + $formdata WHERE `id` = 1");

【问题讨论】:

【参考方案1】:

您可以检索模型并对其进行增量:

$model = Some_Model::find( $id );
$model->value += 1000;
$model->save();

【讨论】:

这是我的更新代码Inventorie::update($arrinput['id'][$i], array( 'quantity'=> 'quantity + ' $arrinput['q'][$i], 'cprice'=>$arrinput['c'][$i], 'sprice'=>$arrinput['s'][$i] )); echo "updated"."<br>"; 您遗漏了更新的DB::raw() 部分。这很重要,否则它会将“数量”视为字符串而不是列名。你希望它是'quantity'=>DB::raw('quantity + ' . $arrinput['q'][$i]) 天啊!你是最好的!它就像魔术一样工作!!!,非常感谢您的帮助!!!,我可以用同样的方法做其他算术函数吗? DB::raw() 会告诉它直接将内容传递给数据库引擎。您可以在 laravel.com/docs 的查询生成器下阅读它【参考方案2】:

使用 Eloquent,您可以编写如下查询:

SomeTable::where('id', 1)
    ->update(array('value', DB::raw('value + 1000')));

【讨论】:

这是我的更新代码Inventorie::update($arrinput['id'][$i], array( 'quantity'=> 'quantity + ' $arrinput['q'][$i], 'cprice'=>$arrinput['c'][$i], 'sprice'=>$arrinput['s'][$i] )); echo "updated"."<br>";【参考方案3】:

理想的方法是使用内置的 Laravel 函数increment

$model = Some_Model::find( $id );
$model->increment('value',1000);

Some_Model::where('id',1)->increment('value',1000);

相同的文档位于http://laravel.com/docs/queries#raw-expressions

【讨论】:

以上是关于Laravel:添加到列中的现有字段数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Postgres 中的现有列中添加“串行”

将数据集参数添加到列中,以便稍后通过 DataPrep 在 BigQuery 中使用它们

在 Laravel 的现有列中添加“ON DELETE CASCADE”

将多个值添加到列中 - Pandas

数据库中的计算字段 - Laravel

Laravel 迁移 - 为 5000 万条数据添加新列