2015-02-02 22 views
63

Ho appena iniziato con laravel e ottengo questo errore: Unknown column 'updated_at' insert into gebruikers (naam, wachtwoord, updated_at, created_at) So che questo updated_at cosa è dalla colonna timestamp quando si migra un tavolo, ma non sto usando il updated_at. L'ho usato quando ho seguito il tutorial di Laravel, ma ora che sto facendo (o tentando di fare) le mie cose, ottengo questo errore anche se non uso i timestamp. Non riesco a trovare il posto dove viene utilizzato. Questo è il codice:laravel: Unknown column 'updated_at'

Controller:

public function created() 
{ 
    if (! User::isValidRegister(Input::all())) 
    { 
     return Redirect::back()->withInput()->withErrors(User::$errors); 
    } 


     // Register the new user or whatever. 
     $user = new User; 
     $user->naam = Input::get('naam'); 
     $user->wachtwoord = Hash::make(Input::get('password')); 
     $user->save(); 

     return Redirect::to('/users'); 
} 

L'instradamento:

Route::get('created', '[email protected]'); 

Il modello:

public static $rules_register = [ 
    'naam' => 'unique:gebruikers,naam' 
]; 

public static $errors; 
protected $table = 'gebruikers'; 

public static function isValidRegister($data) 
    { 
     $validation = Validator::make($data, static::$rules_register); 

     if ($validation->passes()) 
     { 
      return true; 
     } 
     static::$errors = $validation->messages(); 
     return false; 
    } 

Devo essere dimenticando qualcosa ... Che cosa sono Sto sbagliando qui?

+0

controlla la tua tabella se hai la colonna ** updated_at **! –

+0

@MehdiMaghrooni io non. – Loko

+0

E questo è il problema, si desidera accedere alla colonna che non esiste nemmeno. O devi modificare il tuo tavolo per aggiungere quello, o semplicemente rimuoverlo. – Yang

risposta

175

Nel modello, scrivere il codice seguente;

public $timestamps = false; 

Questo funzionerebbe.

+1

potresti descrivere un po 'perché funziona? –

9

Per coloro che utilizzano laravel 5 o superiore devono utilizzare il modificatore pubblico altri saggi un'eccezione

Access level to App\yourModelName::$timestamps must be 
public (as in class Illuminate\Database\Eloquent\Model) 

public $timestamps = false; 
-3
$id = put her id; 
$update['user_id'] = $userId; 
Use where(array('_id'=>$id))->pull($update); 
0

bella risposta da Alex e Sameer, ma informazioni forse solo aggiuntive sul motivo per cui è necessario mettere

public $timestamps = false; 

Timestamps sono ben spiegato sul ufficiale Laravel page:

By default, Eloquent expects created_at and updated_at columns to exist on your >tables. If you do not wish to have these columns automatically managed by >Eloquent, set the $timestamps property on your model to false.