2017-07-28 16 views
0

Ich habe diese Beziehungen in meiner DatenbankLaravel eloquent für hasMany Beziehung funktioniert nicht

Schema::create('my_users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->timestamps(); 
     $table->string('fullName'); 
     $table->string('userName'); 
     $table->string('password'); 
     $table->string('photo'); 
     $table->string('email'); 
    }); 

und

Schema::create('posts', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->timestamps(); 
     $table->string('photo'); 
     $table->text('caption'); 
     $table->integer('like'); 
     $table->integer('my_user_id'); 
    }); 

meine Modelle:

class myUser extends Model 
{ 
    public function post() 
    { 
     return $this->hasMany('App\post'); 
    }   

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


} 

jetzt ich versuche zu bekommen Benutzerdaten unter Verwendung des folgenden Codes:

$post = post::find(1);   
$user = $post->user; 

aber es funktioniert nicht und $ user ist NULL. Ich bin sicher, dass ein Datensatz mit der ID in Beiträgen Tabelle gibt es 1. den seltsamen Teil ist dies, dass ich keinen Fehler, wenn ich die Methode des Namen wie folgt zu ändern:

$post = post::find(1);   
$user = $post->somethingBullshit; 

I Laravel bin mit 5.3 .

Hilfe bitte.

+0

ich bin nicht sicher, aber ich glaube ich schon dieses Problem hatte. Ich denke, es ist wegen des Namens Ihrer Post-Klasse. Versuchen Sie, das Modell und die Tabelle für etwas wie "myPost" umzubenennen und zu sehen, ob es funktioniert. – tompec

Antwort

0

Bestätigen Sie, dass Sie Ihre Klasse Benennung von Dateien mit Großbuchstaben beginnen und Ihre Klassendeklarationen entsprechend modifizieren, wie zB:

class MyUser extends Model 
{ 
    public function post() 
    { 
     return $this->hasMany('App\Post'); 
    }   
} 

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

Sie können den Benutzer dann wählen, wenn Sie den Beitrag erhalten durch eloquent's Verwendung with() Methode und Ihre $user Variable von Ihrem $post Variable erhalten, oder einfach nur die Benutzereigenschaft von Post wie folgt verwenden:

$post = Post::with('user')->find(1); 
$user = $post->user; 
+0

Ich bin mir auch sicher, dass der zugehörige Benutzerdatensatz existiert. – blank94

+0

Wenn Sie $ post zurückgeben, enthält es die Informationen, die Sie erwarten, oder ist es auch leer/NULL? – commanderZiltoid

+0

Kein $ Post ist in Ordnung mit erwarteten Daten. – blank94

Verwandte Themen