我知道有很多类似的问题,但我无法对我的问题采用任何解决方案。
我正在使用Laravel with Confide,它使用Ardent进行验证。
保存用户没有任何问题,插入数据库时删除了password_confirmation(应该这样)并正确插入用户。
尝试更新用户时出现问题。如果我尝试验证用户,则会收到错误消息,指出该用户不是唯一的:
public function storeProfile()
{
$user = $this->currentUser;
$user->password = Input::get( 'password' );
$user->password_confirmation = Input::get( 'password_confirmation' );
//$user->updateUniques();
$user->save();
dd($user->errors()->all());
}
string (31) "username is not unique"
string (28) "email is not unique"
如果我尝试使用$ user-> updateUniques()(正如我在SO中作为可能的解决方案在另一个问题中看到的那样),它不会抱怨唯一性,而是关于DB中没有password_confirmation(所以它不是在插入之前删除它。)
public function storeProfile()
{
$user = $this->currentUser;
$user->password = Input::get( 'password' );
$user->password_confirmation = Input::get( 'password_confirmation' );
$user->updateUniques();
dd($user->errors()->all());
}
Column not found: 1054 Unknown column 'password_confirmation' in 'field list' (SQL: update `users` set `password` = y$wyNl2xMNJqL0mY4X766EfOvO.IKICyDfXckS1cas1Psj1TLwpJZWu, `updated_at` = 2014-03-07 17:13:04, `password_confirmation` = 123456 where `id` = 1)
我试过
public $ autoPurgeRedundantAttributes = true;
public $forceEntityHydrationFromInput = false;
public $autoHydrateEntityFromInput = false;
正如我在Laravel/Ardent/User model editing + saving中看到的那样,但它也没有奏效。在此先感谢您的帮助。
答案 0 :(得分:0)
好吧,事实证明我收到错误的原因是因为我同时使用了updateUniques()和save()。这有效:
public function storeProfile()
{
$user = $this->currentUser;
$user->password = Input::get( 'password' );
$user->password_confirmation = Input::get( 'password_confirmation' );
$user->updateUniques();
if ( !$user->errors()->all() ){
return Redirect::action('UsuarioController@editProfile')
->with('success', 'Success!!');
}
}