【问题标题】:function create with show project details by id in laravel在 laravel 中通过 id 显示项目详细信息的函数创建
【发布时间】:2020-04-08 05:02:49
【问题描述】:

控制器:

    public function create(Request $id)
{
    $data = OperationalPlan::findOrFail($id);
    $val = explode("|-|",$data->text);
    $nval = explode("|-|",$data->ntext);
    $neval = explode("|-|",$data->netext);
    $newval = explode("|-|",$data->newtext);
    $mnue1 = StrategicGoal::get();
    $mnue2 = Measurement::get();
    $mnue3 = tawagh::get();
    $mnue4 = detailed_target::get();
    $mnue5 = Management::get();
    $mnue6 = Department::get();
    $mnue7 = activety::where([['department', Auth::user()->department],['is_confirmed', 1],['is_deleted',0],])->get();


    return view('user.report.create' . $id , compact('mnue1', 'mnue2','mnue3', 'mnue4', 'mnue5', 'mnue6','mnue7',
    'val', 'nval', 'neval', 'newval', 'data'));
}

路线:

  Route::get('/report/create/{id}','User\ReportController@create')->name('dashboard.report.create.id');

网址:

<a href="{{ route('report.create', $project->id) }}" class="" title="View">

消息错误是:

Property [text] does not exist on this collection instance.

有人可以帮我吗?我试图解决这个问题,但我不明白。

【问题讨论】:

    标签: php sql laravel controller


    【解决方案1】:

    当然,删除$id 上的类型提示。传递的“id”不是Request

    public function create($id)
    

    当您键入提示 Request 时,$id 最终会成为 Request 对象。当你将它传递给findOrFailfind 将调用findMany,它最终会将Request 转换为带有toArray() 的数组,因为RequestArrayable。这将最终返回一个 Collection,因为它认为您正在尝试查找许多记录而不是单个记录。

    简而言之,您最终将输入数组传递给find,而不是您正在寻找的“id”。

    【讨论】:

    • 谢谢您的回答帮助我找到解决方案,我使用 find 也使用 (Request $r) 并定义了一个变量 $id = $r->input('id'); .
    猜你喜欢
    • 2020-09-05
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2018-07-31
    相关资源
    最近更新 更多