2016-09-29 4 views
0

Es ist etwas, was ich in der eloquent einer Eins-zu-Eins-Beziehung verpassen:One-To-One Eloquent Relationship Funktionen

class MeetingTest extends Model 
{ 
    protected $table = 'meeting_tests'; 

    public function meeting() { 
     return $this->belongsTo('App\Meeting','meeting_id','id'); 
    } 

    public function observation() { 
     return $this->hasOne('App\Observation','meeting_test_id','id'); 
    } 

    public function activity() { 
     return $this->hasOne('App\TestActivity','activity_id','id'); 
    } 
} 

Die Beobachtung der Klasse ist

class Observation extends Model 
{ 
    protected $table = 'observations'; 

    public function meetingTest() { 
     return $this->belongsTo('App\MeetingTest','meeting_test_id','id'); 
    } 
} 

Wenn ich php Handwerker basteln laufen und

An dieser Stelle innerhalb der Beobachtung Datensatz kann ich die meeting_test_id mit der richtigen ID des gefunden meetingTest, aber wenn ich versuche:

$ mtn-> Beobachtung

es gibt mir null; und in der Datenbank gibt es keine Beobachtungs-ID im Feld "observation_id".

ist dies die Migration:

Schema::create('meeting_tests', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('meeting_id')->unsigned(); 
      $table->integer('observation_id')->unsigned()->nullable(); 
      $table->integer('activity_id')->unsigned()->nullable(); 
      $table->timestamps(); 
     }); 

Ich verstehe nicht, was nicht korrekt ist.

Antwort

0

Ich kann sehen observation_id und in Ihrem meeting_tests aktivitäts Tabelle, die die Besitz Seite von Eins-zu-Eins/Eins-zu-Viele-Beziehung Datensätze in dieser Tabelle macht. Daher beiden Aktivität und Beobachtung Beziehungen in MeetingTest sollten return $ this-> belongsTo statt $ this-> hasOne