为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用 if 语句和 show 文件中的 foreach 的情况下将数据传递给视图?

如何在不使用 if 语句和 show 文件中的 foreach 的情况下将数据传递给视图?

PHP
慕标琳琳 2022-12-23 12:51:59
当我观看 youtube Laravel From Scratch [第 6 部分] - 使用 Eloquent 获取数据时,我看到他在不使用 if 语句和 foreach 的情况下传递数据以查看,我已经尝试过但没有工作public function show(todo $todo){ $todo=todo::find($todo); return view('demo')->with('todo',$todo);}我的观点没有 if 语句和 foreach    @extends('layouts.app')@section('content')    {{$todo->note}}@endsection我在使用 if 语句和 foreach 时的看法@extends('layouts.app')@section('content')@if (count($todo) > 0)    @foreach ($todo as $item)        {{$item->note}}    @endforeach@endif@endsection我收到一个错误Property [note] does not exist on this collection instancehttps://www.youtube.com/watch?v=emyIlJPxZr4&list=PLillGF-RfqbYhQsN5WMXy6VsDMKGadrJ-&index=6
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

该属性不存在的原因是因为结果是一个集合而不是一个数组(在操作注释中找到)


所以你试图note从一个看起来像这样的集合中获取:


[

  {

    "id":1,

    "note":"to do one",

    "created_at":"2020-04-12 08:25:00",

    "updated_at":"2020-04-13 07:20:54",

    "description":"description for todo one"

  }

]

当您打电话时,$todo->note您正在搜索此行:


[

  { # <-- You're searching this line

    "id":1,

    "note":"to do one",

    "created_at":"2020-04-12 08:25:00",

    "updated_at":"2020-04-13 07:20:54",

    "description":"description for todo one"

  }

]

所以你的代码返回一个集合而不是一个数组。一个数组看起来像这样:


{ # <-- Starts with open curly bracket instead of open square bracket

  "id":1,

  "note":"to do one",

  "created_at":"2020-04-12 08:25:00",

  "updated_at":"2020-04-13 07:20:54",

  "description":"description for todo one"

}

你需要弄清楚它为什么要发送一个集合。


从您的代码来看,我发现了一个潜在的问题:


public function show(todo $todo) # <- What is 'todo $todo'?

{

 $todo=todo::find($todo);

 return view('demo')->with('todo',$todo);

}

什么是todo $todo,你在某处调用 show 函数?默认情况下,Laravel 通过网络路由发送该 ID。所以尝试将其更新为:


public function show($id) #<-- change this to '$id'

{

 $todo = Todo::find($id); #<-- Change this to '$id'

 return view('demo')->with('todo',$todo);

}

让我知道是否可以解决问题。


编辑:你真的需要修正你的大写。


查看完整回答
反对 回复 2022-12-23
?
智慧大石

TA贡献1946条经验 获得超3个赞

$todo=todo::find($todo)->first();



查看完整回答
反对 回复 2022-12-23
  • 2 回答
  • 0 关注
  • 54 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信