2013-01-17 32 views
0

如何將Laravel中的記錄更新爲與之前相同的值。Laravel使用相同的值更新mysql字段

已經嘗試了以下,但它沒有工作,我不想做另一個查詢來獲取值並設置它。

$user = User::update($edit['id'], array(
     'name'  => $edit['username'], 
     'email' => $edit['email'], 
     'password' => (is_null($edit['password']) ? '`password`' : Hash::make($edit['password'])), 
)); 

任何想法?

回答

2

這就是DB::raw()是:

$user = User::where_id($edit['id'])::update([ 
     'name'  => $edit['username'], 
     'email' => $edit['email'], 
     'password' => empty($edit['password']) ? DB::raw('`password`') : Hash::make($edit['password']) 
]); 

更妙的是,只是沒有設置數組中:

$update_info = [ 
    'name' => $edit['username'], 
    'email' => $edit['email'] 
]; 

if (! empty($edit['password'])) { 
    $update_info['password'] = Hash::make($edit['password']); 
} 

$user = User::where_id($edit['id'])::update($update_info); 

如果UserEloquent模型,試試這個:

$user = User::find($edit['id']); 

$user->username = $edit['username']; 
$user->email = $edit['email']; 

if (! empty($edit['password'])) { 
    $user->password = Hash::make($edit['password']); 
} 

$user->save(); 
+0

沒有提出的解決方案的工作。第一個和前面一樣,第二個返回'不能使用標量值作爲數組'消息 – Alex

+0

@ w0rldart - User是一個雄辯的模型嗎? –

+0

是的,它是'class User extends Eloquent' – Alex

1

我想爲我正在研究的項目做同樣的事情。我知道我得到它的工作,我認爲這是如何:

User::where('id','=',$edit['id'])->update(array(
    'name'  => $edit['username'], 
    'email'  => $edit['email'], 
    'password' => is_null($edit['password']) ? DB::raw('`password`') : Hash::make($edit['password']) 
));