2013-01-17 4 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'])), 
)); 

아이디어가 있으십니까? UserEloquent 모델 인 경우

$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); 

는,이 시도 :

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

더 나은 그냥 배열에 설정하지하는 것입니다 : DB::raw()가 무엇의

답변

2

:

$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

네, 클래스 Eloquent extends 클래스입니다 – 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']) 
)); 
관련 문제