2014-10-27 5 views
3

есть много вопросов в этой области, но я не могу найти тот, который подходит. Я думаю, что это очень простое понимание Laravel.laravel eloquent hasmany отношение возвращается когда один ряд требуется

У меня есть простая взаимосвязь между «свойствами» и «образами». Для определенного вида отображения мне нужно получить данные свойства вместе с именем файла «ведущего» изображения. Таким образом, мне нужен только один результат изображения, в зависимости от того, помечено ли изображение «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($property->images as $image) 
    {{$image->filename}} 
@endforeach 

Это очевидно глупо. Я думаю, что я просто пропустил что-то простое с этим циклом в представлении, но я, возможно, неправильно понял, как обращаться с этим в контроллере тоже. Думаю, что я читал документы laravel около 20 раз, просто не могу получить эту маленькую деталь. Благодарю.

UPDATE - Я только что был еще один пойти на это, и сумел избавиться от бессмысленного Еогеаспа, делая это в представлении:

$property->images->first()["filename"] 

.. но это все еще чувствует себя не очень " laravel '.. по-прежнему ценит любые мысли о лучшем способе сделать это.

ответ

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

Я думаю, что это просто даст мне одно свойство, тогда как мне нужны все свойства, причем каждый из них имеет только одно связанное изображение. – slickdaze

Смежные вопросы