2017-05-04 7 views
1

Ich habe versucht, User_id von meinen Nutzern mit Creator_id zu vergleichen, um den Ersteller Benutzernamen in meinem Beitrag anzuzeigen, aber ich bekomme den Versuch, Eigentum von Nicht-Objekt-Fehler und ich kann nicht erhalten arround esVersuch, Eigenschaft von Nicht-Objektfehler in Laravel zu erhalten

die Funktion in meinem Controller postcontroller.php:

public function index() 
    { 
    $allusers = users::getusers(); 

    $posts = DB::table('posts')->get(); 
    foreach ($posts as $posts) { 
     foreach ($allusers as $allusers) { 
      if ($posts->creator_id == $allusers->user_id) { 
       array_push($posts,$allusers->username); 
      } 
     } 
    } 
    return view('blog',['posts'=>$posts]); 
    } 

die Funktionen in meinem Modell:

public static function getusers(){ 
    $allusers = users::all(); 
    return $allusers; 
    } 
+0

Können Sie die Ausgabe von $ posts und $ allusers anzeigen? – Exprator

+0

Haben Sie versucht, 'print_r ($ posts)' zu überprüfen, welche Daten es enthält? –

+0

es ist nicht eine beste Möglichkeit zu tun, um zu sehen, wie etwas zu erstellen Ich schlage Ihnen beste Sache, die Benutzer_id speichern, wenn Benutzer einen Beitrag erstellen und dann können Sie einfach alles von diesem use_id –

Antwort

3

Sie sind die gleichen Variablennamen in Ihrem foreach-Schleifen:

foreach ($posts as $post) { 
    foreach ($allusers as $user) { 
     if ($post->creator_id == $user->user_id) { 
      array_push($post,$user->username); 
     } 
    } 
} 

Aber für Ihr Problem, sollten Sie versuchen, dieses Modell in Ihrem Beitrag

public function user(){ 
    return $this->belongsTo(User::class, 'creator_id', 'user_id); 
} 

dann Ihre Ansicht hinzuzufügen:

@foreach($posts as $post) 
    {{ $post->user->name }} 
@endforeach 

https://laravel.com/docs/5.4/eloquent-relationships#one-to-many-inverse

+0

aah ja ich vergaß die Variablen Namen: ') Ich lese über die AngleSto() -Methode, funktioniert wie ein Charme, danke! –

0

Hat Ihre Benutzertabelle eine Spalte wie user_id?

Ich denke, Sie haben mit Benutzer Tabelle ID mit Posts Creator_id überprüfen.

+0

warum nicht in der ersten Schleife gibt es auch den gleichen Namen wie Beiträge 3 mal ?? –

Verwandte Themen