2017-06-21 4 views
1

Ich versuche, Daten von einem Controller zu einer Ansicht auf Laravel 5.4 zu senden.Laravel - Daten können nicht durch die Sicht übertragen werden

Mein Controller "PagesController.php":

public function bird($id) { 

    $infoBirdById = new InfoBird(); 
    $birdById = $infoBirdById->getBirdById($id); 

    $infoHealthById = new InfoHealth(); 
    $healthById = $infoHealthById->getHealthById($id); 

    $infoTransportByIdBird = new InfoTransport(); 
    $transportByIdBird = $infoTransportByIdBird->getTransportByIdBird($id); 

    $infoUserByIdHealer = new InfoUser(); 
    $userByIdHealer = $infoUserByIdHealer->getUserByIdHealer($id); 

    var_dump($userByIdHealer); 
    //var_dump($birdById); 
    //var_dump($healthById); 
    //var_dump($transportByIdBird); 

    return view('pages.bird', compact('birdById', 'healthById', 'userByIdHealer', 'transportByIdBird')); 
} 

Ein Auszug aus der Ansicht "bird.blade.php":

<div class="block block-name"> 
    <h2>{{ $userByIdHealer->prenom }} {{ $userByIdHealer->nom }}</h2> 
</div> 

ist hier der Fehler: Die Eigenschaft [prenom] nicht existieren für diese Sammlungsinstanz.

Die resultierende der Halde von userByIdhealer:

object(Illuminate\Support\Collection)[216] 
    protected 'items' => 
    array (size=1) 
     0 => 
     object(stdClass)[223] 
      public 'id_biodiv_acteur' => int 3 
      public 'nom' => string 'Rinaire' (length=7) 
      public 'prenom' => string 'Vété' (length=6) 
      public 'civilite' => string 'Homme' (length=5) 
      public 'date_naissance' => string '2017-05-10' (length=10) 
      ect... 

So verstehe ich nicht, warum ich diesen Fehler haben, denn in der Dump ich, dass "prenom" hier ...

ist sehen

Danke für Ihre Hilfe!

+0

Zeigen Sie Ihre getUserByIdHealer ($ id); Methode –

+1

'prenom' ist keine Funktion oder Attribut auf' Collection'. Da '$ userByIdHealer' eine' Collection' ist, müssen Sie sie loopen oder '-> first()' verwenden, um die erste Instanz zu erhalten. Dann sollten Sie '-> prenom' verwenden können, um auf dieses Attribut zuzugreifen. –

+0

@Tim Lewis hat es geschafft! Und wenn Sie viele Elemente in einer Sammlung erreichen, verwenden Sie einfach '-> get()' anstelle von '-> first()'. – ettdro

Antwort

1
{{ $userByIdHealer[0]->prenom }} {{ $userByIdHealer[0]->nom }} 

Sie es in 0-Array so verwenden diese bekommen oder Sie können mit foreach-Schleife und verwenden, ohne 0

+0

Sie Sir, Sie verdienen einen Kuss, es ist eine gute Antwort! – TuxxyDOS

+0

Seien Sie sich bewusst, dass dies ein "versuchen zu Eigenschaft von Nicht-Objekt" auslösen wird, wenn '$ userByIdHealer [0]' nicht gesetzt ist; sollte immer mit 'isset (...)' überprüfen, bevor versucht wird, darauf zuzugreifen. –

Verwandte Themen