Php 当需要一行时,laravel eloquent有许多关系返回

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:

这方面有很多问题,但我找不到一个合适的。我认为这是拉威尔最基本的理解

我在“属性”和“图像”之间建立了一个简单的关系。对于特定的映射视图,我需要获取属性数据以及“lead”映像的文件名。因此,我只需要一个图像结果,根据图像是否被标记为“1”作为DB中的主要图像

控制器代码如下所示:

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);
        }