2016-05-03 32 views
1

所有 我使用laravel 5日提交,我的代码是这样的laravel更新一个与另一场

$assign = Assign::where('kh','=',$product->kh)->update(['plan_assign_amount' => 'ROUND(single_sales_rate*'.($skuCounts*2).')']); 

所以这是很容易的,实际上是在MySQL statment,我的SQL字符串是这样

update `assign` set `plan_assign_amount` = ROUND(single_sales_rate*18); 

但它不能工作,所以有一个简单的方法来做到这一点?或只使用DB:update()来运行原始的SQL?

感谢您的帮助;

+1

使用'DB :: raw()' – aldrin27

+0

这是更新多行还是单项? –

+0

'$ skuCounts'是什么? – Hamelraj

回答

0

您可以用DB::statementDB::rawDB::update运行原始数据库查询,或者你可以尝试做这样的事情:

$assign = Assign::where('kh', '=', $product->kh)->first(); 
$assign->update(['plan_assign_amount' => round($assign->single_sales_rate * $skuCounts * 2)]); 
0

找到答案是

$assign = DB::table('assign')->where('kh','=',$product->kh)->update(['plan_assign_amount' => DB::raw('ROUND(single_sales_rate*'.($skuCounts*2).')')]); 

工作正常!