2015-04-19 3 views
0

У меня есть моя форма. Когда я нажимаю кнопку submit, я вызываю своих пользователей контроллера на метод Create, для добавления одного пользователя.SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 'inputemail' в 'where clause'

Маршрут перейти к контроллеру, а затем я получаю один ошибке неизвестный столбец inputemail

@section('modal_body') 
    {{ Form::open(array('id' =>'formuser-create', 'role' => 'form', 'url' =>'users/create', 'class' => 'form-horizontal')) }} 
      <div class="form-group"> 
       {{ Form::label('inputuser', 'Nombre de usuario', array('class' => 'col-md-4 control-label')) }} 
       <div class="col-md-5"> 
        {{ Form::text('inputuser','', array('placeholder' => 'Introduce la contraseña...', 'class' => 'form-control input-md')) }} 
       </div> 
      </div> 
      <div class="form-group"> 
       {{ Form::label('inputpassword', 'Contraseña', array('class' => 'col-md-4 control-label')) }} 
       <div class="col-md-5"> 
        {{ Form::password('inputpassword','', array('placeholder' => 'Introduce la contraseña...', 'class' => 'form-control input-md')) }} 
       </div> 
      </div> 
      <div class="form-group"> 
       {{ Form::label('inputpassword1', 'Confirmar constraseña', array('class' => 'col-md-4 control-label')) }} 
       <div class="col-md-5"> 
        {{ Form::password('inputpassword1','', array('placeholder' => 'Vuelve a introducir la contraseña...', 'class' => 'form-control input-md')) }} 
       </div> 
      </div> 
      <div class="form-group"> 
       {{ Form::label('inputemail', 'Email', array('class' => 'col-md-4 control-label')) }} 
       <div class="col-md-5"> 
        {{ Form::text('inputemail','', array('placeholder' => 'Introduce el email...', 'class' => 'form-control input-md')) }} 
       </div> 
      </div> 
      <div class="form-group"> 
       {{ Form::label('es_admin', '¿Es administrador?', array('class' => 'col-md-4 control-label')) }} 
       <div class="col-md-5"> 
        {{ Form::checkbox('es_admin',1,false) }} 
       </div> 
      </div> 

@stop 
@section('modal_footer') 
<div class='form-group text-center' id='editor-actions'> 
    {{ Form::submit('Guardar', ['class' => 'btn btn-success']) }} 
    {{ Form::reset('Limpiar', ['class' => 'btn btn-primary']) }} 
    {{ Form::close() }} 
</div> 
@stop 
@endif 

Звоню мой контроллер

Route::Controller('users','UsersController'); 

код моего контроллера является

 <?php 

class UsersController extends BaseController 
{ 
    public function __construct() { 
     $this->beforeFilter('auth'); //bloqueo de acceso 
    } 

    public function getIndex() 
    { 
     $my_id = Auth::user()->id; 
     $is_admin = Auth::user()->admin; 
     //control permissions only access administrator 
     if($is_admin==1) 
     { 
      $users = User::where('admin', '<>', '1')->where('id', '<>', $my_id)->get(); 
      return View::make('admin/users.index')->with('users',$users); 
     } 
     else 
     { 
      return View::make('errors.access_denied'); 
     } 
    } 

    //metodo para agregar al usuario 
    public function postCreate() 
    { 
     //validamos reglas inputs 
     $rules = array(
      'inputuser' => 'required|max:10', 
      'inputpassword' => 'required|min:8', 
      'inputpassword1' => 'required|min:8', 
      'inputemail' => 'required|email|unique:users' 
     ); 

     $validation = Validator::make(Input::all(), $rules); 
     //Si no pasa la validacion 
     if($validation->fails()) 
     { 
      return Redirect::back()->with_input()->with_errors($validation); 
     } 
     //Si todo ha ido bien guardamos 
     $password = Input::get('inputpassword'); 
     $user = new User; 
     $user->username = Input::get('inputuser'); 
     $user->password = Hash::make($password); 
     $user->email = Input::get('inputemail'); 
     $user->admin = Input::get('es_admin'); 

     //guardamos 
     $user->save(); 

     //redirigimos a usuarios 

     return Redirect::to('admin/users.index')->with('status','ok_create'); 

    } 
} 

Я получаю следующие ошибки: trace

I

lluminate\Database\QueryException thrown with message "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'inputemail' in 'where clause' (SQL: select count(*) as aggregate from `users` where `inputemail` = [email protected])" 

Stacktrace: 
#35 Illuminate\Database\QueryException in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Connection.php:625 
#34 UsersController:postCreate in <#unknown>:0 
#33 Illuminate\Routing\Router:Illuminate\Routing\{closure} in <#unknown>:0 
#32 PDOException in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Connection.php:299 
#31 PDO:prepare in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Connection.php:299 
#30 Illuminate\Database\Connection:Illuminate\Database\{closure} in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Connection.php:617 
#29 Illuminate\Database\Connection:runQueryCallback in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Connection.php:581 
#28 Illuminate\Database\Connection:run in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Connection.php:304 
#27 Illuminate\Database\Connection:select in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:1412 
#26 Illuminate\Database\Query\Builder:runSelect in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:1397 
#25 Illuminate\Database\Query\Builder:getFresh in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:1384 
#24 Illuminate\Database\Query\Builder:get in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:1830 
#23 Illuminate\Database\Query\Builder:aggregate in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:1768 
#22 Illuminate\Database\Query\Builder:count in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Validation\DatabasePresenceVerifier.php:57 
#21 Illuminate\Validation\DatabasePresenceVerifier:getCount in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Validation\Validator.php:1020 
#20 Illuminate\Validation\Validator:validateUnique in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Validation\Validator.php:322 
#19 Illuminate\Validation\Validator:validate in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Validation\Validator.php:283 
#18 Illuminate\Validation\Validator:passes in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Validation\Validator.php:297 
#17 Illuminate\Validation\Validator:fails in C:\wamp\www\viversoft\app\controllers\UsersController.php:38 
#16 UsersController:postCreate in <#unknown>:0 
#15 call_user_func_array in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Routing\Controller.php:231 
#14 Illuminate\Routing\Controller:callAction in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:93 
#13 Illuminate\Routing\ControllerDispatcher:call in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:62 
#12 Illuminate\Routing\ControllerDispatcher:dispatch in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Routing\Router.php:967 
#11 Illuminate\Routing\Router:Illuminate\Routing\{closure} in <#unknown>:0 
#10 call_user_func_array in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Routing\Route.php:109 
#9 Illuminate\Routing\Route:run in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Routing\Router.php:1033 
#8 Illuminate\Routing\Router:dispatchToRoute in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Routing\Router.php:1001 
#7 Illuminate\Routing\Router:dispatch in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:775 
#6 Illuminate\Foundation\Application:dispatch in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:745 
#5 Illuminate\Foundation\Application:handle in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Session\Middleware.php:72 
#4 Illuminate\Session\Middleware:handle in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Cookie\Queue.php:47 
#3 Illuminate\Cookie\Queue:handle in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Cookie\Guard.php:51 
#2 Illuminate\Cookie\Guard:handle in C:\wamp\www\viversoft\vendor\stack\builder\src\Stack\StackedHttpKernel.php:23 
#1 Stack\StackedHttpKernel:handle in C:\wamp\www\viversoft\vendor\laravel\framework\src\Illuminate\Foundation\Application.php:641 
#0 Illuminate\Foundation\Application:run in C:\wamp\www\viversoft\public\index.php:49 

Я не понимаю, потому что неизвестно Colum 'inputemail'

ответ

1

Из docs of the unique rule:

unique:table,column,except,idColumn

Поле под проверки должно быть уникальным в данной таблице базы данных , Если параметр column не указан, будет использоваться имя поля.

Поскольку ваше имя ввода отличается от имени столбца в базе данных вы должны указать его:

'inputemail' => 'required|email|unique:users,email' 
//           ^^^^^