2017-08-29 4 views
1

Warum "Beziehung" in meinem Seeder-Code nicht funktioniert? Es fügt ohne Probleme in das Benutzermodell ein. Aber fügt nichts in das UserMeta-Modell ein. Es gibt nicht einmal einen Fehler.
Ich habe diesen Code im Controller getestet. Es funktionierte gut mit "Beziehung"Laravel: Wie man Sämaschine mit Beziehungen läuft

<?php 

use Illuminate\Database\Seeder; 
use App\User; 
use App\UserMeta; 

class MyUsersTableSeeder extends Seeder 
{ 
    /** 
    * Auto generated seed file. 
    * 
    * @return void 
    */ 
    public function run() 
    { 
     if (User::count() == 0) { 

      $user = User::create([ 
       'name'   => 'Admin', 
       'email'   => '[email protected]', 
       'password'  => bcrypt('password'), 
       'remember_token' => str_random(60), 
      ]); 

      $user_meta = new UserMeta([ 
       'meta_key' => 'role', 
       'meta_value' => 'admin', 
      ]); 
      $user->UserMeta()->save($user_meta); 
     } 
    } 
} 

Modell Benutzer

public function UserMeta() 
{ 
    return $this->hasOne('App\UserMeta', 'user_id'); 
} 

Modell UserMeta

public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

Benutzer Tabelle

 Schema::create('users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('email')->unique(); 
      $table->string('password'); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 

usermeta Tisch

 Schema::create('usermeta', function (Blueprint $table) { 
      $table->increments('user_meta_id'); 
      $table->integer('user_id')->unsigned(); 
      $table->string('meta_key'); 
      $table->string('meta_value'); 
     }); 
+0

zeigen Sie beide Modellbeziehungen –

+0

hat die Benutzertabelle usermeta_id? – Sletheren

Antwort

0

ändern usermeta Migration

Schema::create('usermeta', function (Blueprint $table) { 
    $table->increments('user_meta_id'); 
    $table->integer('user_id')->unsigned(); 

    // add foreign key constraint 
    $table->foreign('user_id')->references('id')->on('users'); 

    $table->string('meta_key'); 
    $table->string('meta_value'); 
}); 

und starten Sie Ihre Wanderungen.

0

Versuchen Sie folgenden Code:

$user_meta = new UserMeta([ 
       'meta_key' => 'role','user_id'=>$user_id, 
      ]); 
$user_meta->user_id=$user->id; 
$user_meta->save(); 
+1

Ich habe die Tabelle in das Modell eingeführt. protected $ table = 'usermeta'; – Miri

+0

Die Erwähnung der Namenskonvention für meine Antwort wurde entfernt –