Что я здесь делаю неправильно?ELOQUENT update db with save();
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, потому что я не знаю, что нужно будет обновлять из всех столбцов.
Вы уверены, что у вас есть запись пользователя в '$ user', прежде чем вы просматриваете и устанавливаете атрибуты? Кроме того, вы можете использовать 'User :: find ($ user_id_update_user_details ['user_id'])', поскольку вам нужна только одна запись. –
Я честно не сделал бы этого foreach, так как это имеет серьезные проблемы с безопасностью. Вместо этого вы должны определить доступные атрибуты на вашей модели и [назначить массой] (http://laravel.com/docs/database/eloquent#mass-assignment) вход или вручную выбрать каждый из них. Кроме того, я полагаю, вы хотели запросить 'where ('id')' или 'find ($ id)', а не 'where ('user_id')', но я могу ошибаться в этом. – vFragosop