Laravel Route 未传递对象

Posted

技术标签:

【中文标题】Laravel Route 未传递对象【英文标题】:Laravel Route not passing object 【发布时间】:2019-12-02 18:26:07 【问题描述】:

我正在开发一个 Laravel 应用程序,并且我有一个刀片文件,其中包含用于打开用户患者个人资料的链接,单击它会加载页面以显示患者,但是该页面没有通过用户对象,并且我不知道为什么

我已经尝试为该页面编写我的路线,就像我为其他页面编写的路线一样,路线已定义,但仍未通过

路线

Route::get('/viewPatient/patient', 'PatientController@show')->name('patients.viewPatient');

链接

<td><a href="route('patients.viewPatient', $user)">$user->firstname</a></td>

控制器函数,如果我死了并且乱扔它只是返回一个空的用户对象。

public function show(User $user)
    
        dd($user);
        return view('patients.show', compact('user'));
    

预期的结果是 show 方法需要接收用户对象,它没有。

【问题讨论】:

【参考方案1】:

您需要调用与传入路由时相同的变量名称,如下所示:

public function show(User $patient)

【讨论】:

好的,我在到用户的路径中更改了患者并修复了它。【参考方案2】:

试试

<a href="route('patients.viewPatient', ['patient'=>$user->id])">$user->firstname</a>

【讨论】:

【参考方案3】:

//改成这样

<td><a href="route('patients.viewPatient', $user->id)">$user->firstname</a></td>

//在你的控制器中

public function show($id) //$id you can write $patientId

    $user = User::where('id',$id)->first();
    return view('patients.show', compact('user'));

【讨论】:

这行得通,但是有没有办法将整个用户对象传递给它以减少数据库操作?

以上是关于Laravel Route 未传递对象的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 如何不在控制器中传递未使用的参数

手把手教你跑Larave框架实战笔记系列之二

Laravel route() 传递数据

将变量传递给Laravel {{route}}帮助器

如何将可选 ID 从 Route 传递给 Laravel 控制器?

未找到 xampp 对象中的 Laravel 5.2