我需要选择id和name字段,将集合传递给视图并迭代它以生成select的选项。但是,我收到以下错误:
尝试获取非对象的属性 (查看:../ resources / views / lalayout / app.blade.php) (查看:../ resources / views / layouts / app.blade.php)
控制器
public function index()
{
$propertyTypes = PropertyType::pluck('name', 'id');
return view('home', compact('propertyTypes'));
}
查看
@foreach($propertyTypes as $propertyType)
<option value="{{ $propertyType->id }}">
{{ $propertyType->name }}
</option>
@endforeach
表
ID Name
1 Detached
2 Semi-detached
3 Terraced
4 Flat
5 Bungalow
6 Land
7 Park Home
答案 0 :(得分:2)
尝试:
public function index()
{
$propertyTypes = PropertyType::pluck('name', 'id');
return view('home', ['propertyTypes' => $propertyTypes]);
}
如果不起作用您必须检查view
例如:
views/ControllerName/blog/index.blade.php
存在此blade
还是不存在?
因为您stack trace
在resources/views/layouts/app.blade.php
答案 1 :(得分:2)
您正在使用pluck
方法将结果作为key-value
对获取,但在您的视图中,您尝试将该值作为导致此错误的对象进行访问。
您可以将结果作为模型获取,也可以更新视图。
选项1:将结果作为模型获取
public function index()
{
$propertyTypes = PropertyType::select('name', 'id')->get();
return view('home', compact('propertyTypes'));
}
选项2:将集合作为键值迭代
@foreach($propertyTypes as $id => $name)
<option value="{{ $id }}">
{{ $name }}
</option>
@endforeach
答案 2 :(得分:1)
试试这个。
这将为您提供迭代所需的集合。
public function index()
{
$propertyTypes = PropertyType::select('name', 'id')->get();
return view('home', compact('propertyTypes'));
}
答案 3 :(得分:0)
查看
@foreach($propertyTypes as $id => $name)
<option value="{{ $id }}">
{{ $name }}
</option>
@endforeach
现在为什么我们需要这样做。如果你打印你的对象dd($ propertyTypes-&gt; tooArray());像这样你会看到一个包含id列值作为数组索引的数组。所以要获得这个值你需要将索引值存储在某处,在foreach期间我使用$ id =&gt; $ name所以$ id将获得索引值,$ name将获取该索引的数据,即名称列值