2017-06-21 8 views
1

コントローラからLaravel 5.4のビューにデータを送信しようとしています。Laravel - ビューを通してデータを渡すことができません

マイコントローラ "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')); 
} 

ビュー "bird.blade.php" の抽出物:ここで

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

はエラーになります。プロパティは、[prenom]ありませんこのコレクションインスタンスに存在します。

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... 

私はこのエラーを持っている理由ダンプに私は「prenom」はここにあることがわかりますので、だから私は

...、理解していません

ご協力ありがとうございます!

+0

があなたのgetUserByIdHealer($ ID)を表示せずに、あなたはforeachのループを持つとは、使用することができます。メソッド –

+1

'prenom'は' Collection'の関数や属性ではありません。 '$ userByIdHealer'は' Collection'なので、それをループするか、最初のインスタンスを取得するために ' - > first()'を使う必要があります。 ' - > prenom'を使ってその属性にアクセスできるはずです。 –

+0

@Tim Lewisがそれを手に入れました!コレクション内の多くのアイテムに到達する場合、 ' - > first()'の代わりに ' - > get()'を使うだけです。 – ettdro

答えて

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

あなたは0アレイ内のそれを取得しているので、これを使用するか、または0

+0

あなたは、あなたはキスをする価値がある、それは良い答えです! – TuxxyDOS

+0

'$ userByIdHealer [0]'が設定されていない場合、 '非オブジェクトのプロパティを試そうとしています'がスローされることに注意してください。アクセスしようとする前に常に 'isset(...) 'でチェックすべきです。 –

関連する問題