2017-06-21 71 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);方法 –

+1

'prenom'不是'Collection'上的函数或属性。因为'$ userByIdHealer'是一个'Collection',所以你需要循环它,或者使用' - > first()'获得第一个实例,那么你应该可以使用' - > prenom'来访问该属性。 –

+0

@蒂姆刘易斯明白了!如果你到达一个集合中的许多项目,只需使用' - > get()'而不是' - > first()'。 – ettdro

回答

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

你得到它里面0阵列,所以用这个,也可以循环用foreach和使用无0

+0

你先生,你应该得到一个吻,这是一个很好的答案! – TuxxyDOS

+0

请注意,如果没有设置$ userByIdHealer [0]',它会抛出一个'尝试非对象的属性';在尝试访问之前,应该总是使用'isset(...)'进行检查。 –