2017-04-18 3 views
0

Ich versuche, eine 'hat eine' Beziehung zu implementieren, aber dieser Fehler verhindert, dass ich das Token speichern.Laravel - SQLSTATE [42S22] - Fremdschlüssel

Migrations:

class CreatePasswordTokensTable extends Migration 
{ 
    public function up() 
    { 
     Schema::create('password_tokens', function (Blueprint $table) { 
      $table->engine = 'InnoDB'; 

      $table->increments('id'); 
      $table->integer('user_id')->unsigned()->index(); 
      $table->foreign('user_id')->references('id')->on('users'); 
      $table->string('token'); 

     }); 
    } 

    ... 
} 

class CreateUsersTable extends Migration 
{ 
    public function up() 
    { 
     Schema::create('users', function (Blueprint $table) { 
      $table->engine = 'InnoDB'; 

      $table->increments('id'); 
      $table->string('email')->unique(); 
      $table->string('password')->default(''); 
      $table->string('remember_token', 100)->default(''); 
      $table->boolean('active')->default(false); 
      $table->timestamps(); 
     }); 
    } 

    ... 
} 

Models:

class User extends Model 
{ 
    public function passwordToken() 
    { 
     return $this->hasOne('App\Models\PasswordToken'); 
    } 
} 

class PasswordToken extends Model 
{ 
    public function user() { 
     return $this->belongsTo('App\Models\User'); 
    } 
} 

Befehle - enter image description here

seltsam erscheinen User_id aft er die save nennen - enter image description here

Fehler:

Illuminate \ Database \ QueryException mit Meldung 'SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unknown column 'user_id' in' Feldliste '(SQL: Insert in users (email, id, user_id, updated_at, created_at) Werte (E-Mail, 1, 1, 2017.04.18 10.05.47, 10.05.47 2017.04.18 ))‘

Antwort

0

Wenn Sie diese 5.3 verwenden Laravel Versuchen:

Schema::create('password_tokens', function (Blueprint $table) { 
      $table->engine = 'InnoDB'; 
      $table->increments('id'); 
      $table->unsignedInt('user_id'); 
      $table->foreign('user_id')->references('id')->on('users'); 
      $table->string('token'); 

     }); 
0

ich glaube, Sie Ihr Modell wie folgt aktualisieren:

class User extends Model 
{ 

    public function passwordToken(){ 
     return $this->hasOne('App\Models\PasswordToken','user_id', 'id'); 
    } 

} 

class PasswordToken extends Model 
{ 

    public function user() 
    { 
     return $this->belongsTO('App\Models\User', 'user_id', 'id'); 
    } 
} 

Hoffnung diese Arbeit für Sie !

+0

Eigentlich ist das, was ich gerade getan habe und er fragt nach einer 'user_id' in der Benutzertabelle ... ich kann es nicht bekommen. ty für die Hilfe von BTW. – Pixeuh

0

Haben Sie $ table und $ fillable Attribute bei Ihren Modellen gefüllt?

Haben Sie Folgendes versucht?

+0

http://stackoverflow.com/questions/43472087/laravel-save-with-hasone-relation – Pixeuh

+0

Frage entfernt oder falsche Verbindung entfernt – aaron0207

Verwandte Themen