2015-12-18 6 views
5

基本的には、条件を使用してモデルにデータを保存して、複数のセーブデータが同時に実行されないようにします。laravelで条件を使用して保存するには?

私は現在、今ある:

$order = Order::find(id); 
$order->paid_amount = $amount; 
$order->status = $status; 
$order->save(); 

何が必要なのである。

$order = Order::find(id); 
$order->paid_amount = $amount; 
$order->status = $status; 
$order->where('last_update', $last_update); 
$order->save(); 

それが効率的にlaravelでこれを行うことは可能ですか私は生のSQLを使用するか、更新する必要がありますか?私はこれはこれを行うための最善の方法だと思います

+0

あなたは、単に場合の条件を使用することができます( '$ order->( 'LAST_UPDATE'、$のLAST_UPDATE))場合は' [保存 –

+0

はありませんデータベース内のデータの取得と保存が1つのSQLの更新構文に含まれていないため、依然として一貫性のないデータが生成される可能性があります。 – Nameless

+0

'save 'を呼び出すと、すべてのステートメントが挿入/更新されます –

答えて

1

私はあなたが意味を推測するには、「効率的雄弁でこれを行うには、それは可能ですか私は生のSQLを使用するか、または更新することがありますか?」

とにかく、私はあなたが欲しいものを行うには、クエリビルダが必要だと思う:

DB::table('order') 
    ->where('id', $id) 
    ->update([ 
     'paid_amount' => $amount, 
     'status' => $status; 
     ]); 

あなたが得ることができるようアトミックです。

1

$order = Order::where('last_update', $last_update)->find($id); 
$order->paid_amount = $amount; 
$order->status = $status; 
$order->save(); 
3

@Amarnasan応答の簡易版:

Order::findOrFail($id)->update([ 
    'paid_amount' => $amount, 
    'status' => $status; 
]); 
関連する問題