2013-03-11 10 views
0

내가 여기서 뭘 잘못하고있어?ELOQUENT를 사용하여 save db()를 업데이트하십시오.

public static function updateuserdetails(){ 

    $user_id_update_user_details = Input::get(); 
    // find the user to update : 
    $user = User::where('user_id' , '=', $user_id_update_user_details['user_id'])->first() ; 

    foreach ($user_id_update_user_details as $key => $value) {   
     $user->$key = $value ; 
    } 

$affected = $user->save(); 
return $affected ; 
} 

데이터를 데이터베이스에 저장하지 않습니다. 모든 열에서 업데이트가 필요할지 모르기 때문에 "foreach"루프를 사용해야합니다.

+0

속성을 살펴보고 속성을 설정하기 전에 사용자 레코드가 '$ user'에 있는지 확실합니까? 또한 단일 레코드 만 필요하기 때문에'User :: find ($ user_id_update_user_details [ 'user_id'])'를 사용할 수 있습니다. –

+0

나는 심각한 보안 문제가 있기 때문에 솔직히 foreach를하지 않을 것이다. 모델에서 접근 가능한 속성을 정의하고 [mass assign] (http://laravel.com/docs/database/eloquent#mass-assignment) 입력을 선택하거나 각각을 수동으로 선택해야합니다. 또한, 당신이'where ('id')'또는'find ($ id)'가 아닌'where ('user_id')'를 쿼리하고 싶다고 생각합니다. – vFragosop

답변

1

모델에 접근 가능한 배열을 설정하고 대신 채우기를 사용하십시오. 또한 ... '이드'라는 당신의 이드가 아닙니까? 그렇다면 user_id 값을 설정하면 기본 SQL이 실패하게됩니다.

class User extends Eloquent { 

    public static $accessible = array('id', 'name', 'email', ...); 

} 

Route::post('user/save', function() 
{ 
    $user = User::find(Input::get('id')); 

    if (empty($user)) 
     return 'Could not find user'; 

    $user->fill(Input::get()); 

    $user->save(); 
}); 
+0

그것은 작동합니다! 고마워. –

관련 문제