2016-05-03 33 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).')')]); 

工作正常!