Php 当需要一行时,laravel eloquent有许多关系返回
这方面有很多问题,但我找不到一个合适的。我认为这是拉威尔最基本的理解 我在“属性”和“图像”之间建立了一个简单的关系。对于特定的映射视图,我需要获取属性数据以及“lead”映像的文件名。因此,我只需要一个图像结果,根据图像是否被标记为“1”作为DB中的主要图像 控制器代码如下所示:Php 当需要一行时,laravel eloquent有许多关系返回,php,laravel,collections,eloquent,Php,Laravel,Collections,Eloquent,这方面有很多问题,但我找不到一个合适的。我认为这是拉威尔最基本的理解 我在“属性”和“图像”之间建立了一个简单的关系。对于特定的映射视图,我需要获取属性数据以及“lead”映像的文件名。因此,我只需要一个图像结果,根据图像是否被标记为“1”作为DB中的主要图像 控制器代码如下所示: if(Input::get('m') == 'true'){ //$map_data = Property::all(); $map_data = Property:
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次了,只是不太了解这个小细节。谢谢
更新-我刚刚又做了一次尝试,通过在视图中执行以下操作,成功地摆脱了无意义的foreach:
$property->images->first()["filename"]
。。但这仍然感觉不太“拉威尔”。。如果您能想出更好的方法,我将不胜感激。尝试将->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);
}