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:添加到列中的现有字段数据的主要内容,如果未能解决你的问题,请参考以下文章
将数据集参数添加到列中,以便稍后通过 DataPrep 在 BigQuery 中使用它们