这个领域有很多问题,但我找不到合适的问题。我认为这是Laravel非常基本的理解。
我在'properties'和'images'之间建立了一个简单的关系。对于特定的映射视图,我需要获取属性数据以及“lead”图像的文件名。因此,根据图像是否标记为“1”作为数据库中的主要图像,我只需要一个图像结果。
控制器代码如下所示:
if(Input::get('m') == 'true'){
//$map_data = Property::all();
$map_data = Property::with(array('images' => function($query)
{
//just grab the lead image to put in the marker popups.
$query->where('is_lead', 1)->first();
}))->get();
return View::make('property_map')->with('data', $map_data);
}
但是在视图中,我能够使用它的唯一方法是使用foreach循环,即使我只想要一个结果:
@foreach($property->images as $image)
{{$image->filename}}
@endforeach
这显然是愚蠢的。我认为我只是在视图中忽略了一些简单的循环,但我可能误解了如何在控制器中解决这个问题。我想我现在已经阅读了大约20次laravel文档了,只是不能完全得到这个小细节。感谢。
更新 - 我刚刚接受了另一次,并设法通过在视图中执行此操作摆脱无意义的foreach:
$property->images->first()["filename"]
..但这仍然感觉不到'laravel'..仍然会对更好的方法有任何想法。
答案 0 :(得分:0)
尝试将->get()
更改为->first()
。
if(Input::get('m') == 'true'){
//$map_data = Property::all();
$map_data = Property::with(array('images' => function($query)
{
//just grab the lead image to put in the marker popups.
$query->where('is_lead', 1)->first();
}))->first();
return View::make('property_map')->with('data', $map_data);
}