2016-08-17 4 views
1

I Laravel Eloquent Klasse CollageLaravel Eloquent Spar relationales Modell nicht

class Collage extends Model 
{ 

    /** 
    * Get the User that owns this Collage. 
    */ 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 

Collage Migration Schema

Schema::create('collages', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id')->unsigned(); 
      $table->string('name')->nullable(); 
      $table->timestamps(); 
     }); 

und User

class User extends Authenticatable 
{ 
    /** 
    * Get all Collages that belongs to this User. 
    */ 
    public function collages() 
    { 
     return $this->hasMany('App\Collage'); 
    } 
} 

aber wenn ich dies auf Kesselflicker

haben
$user = App\User::find(1)->first(); 
$collage = new App\Collage; 
$collage->name = 'Collage'; 
$collage->user = $user; 

//and save 
$collage->save(); 

wirft mir Fehler QueryException

General error: 1 table collages has no column named user 
+0

Scheinen neue Benutzer zu Collage hinzufügen? – KmasterYC

+0

nein Ich wollte nur Benutzer-ID (wer besitzt diese Collage) zu Collage. –

+0

Ich denke, aus dem, was ich sehe, müssen Sie die Beziehungen ändern (ich nehme Ihre Spalten an): '$ this-> hasMany ('App \ User', 'user_id', 'id');' und 'return $ this -> hasMany ('App \ Collage', 'id', 'user_id'); ' –

Antwort

1

ändern

$collage->user = $user 

Um

$collage->user_id = $user->id 
1

Aktualisieren Sie Ihr Schema, das die Beziehung zu machen,

Schema::create('collages', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->integer('user_id')->unsigned(); 
    $table->foreign('user_id')->references('id')->on('users'); 
    $table->string('name')->nullable(); 
    $table->timestamps(); 
}); 

Auf diese Weise Laravel Eloquent automatisch Verweise auf die Beziehung machen.

+0

Ja, ich habe diese Zeile hinzugefügt, aber immer noch das gleiche, ich benutze sqlite, kann sqlite das verursachen? –

Verwandte Themen