【发布时间】:2023-12-21 12:23:01
【问题描述】:
我尝试将数据从控制器发送到 Laravel 5.4 上的视图。
我的控制器“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”在这里......
感谢您的帮助!
【问题讨论】:
-
显示你的 getUserByIdHealer($id);方法
-
prenom不是Collection上的函数或属性。因为$userByIdHealer是Collection,你需要循环它,或者使用->first()来获取第一个实例,那么你应该可以使用->prenom来访问那个属性。 -
@Tim Lewis 明白了!如果您在一个集合中找到许多项目,只需使用
->get()而不是->first()。 -
正确,如果使用的
closure是->get(),则QueryBuilder实例将返回Collection,如果与->first()一起使用,则返回Model(通常)。此外,Collection还具有函数->first()以返回单个Model。否则,将Collection视为具有附加功能的数组。
标签: php database laravel blade