2014-03-26 65 views
1

我有兩個模型是通過定義之間的關係:Laravel模板,不檢查是否存在關係

class Appartement extends Eloquent { 
    public function lang() 
{ 
    return $this->hasOne('AppartementLang')->where('language_id', '=', '2'); 
} 
} 

所以沒有什麼大的。

當我嘗試做這樣的事情:

@foreach ($appartements as $appartement) 
    {{$appartement->lang->title}}<br/> 
    {{$appartement->lang->subtitle}}<br/> 
    {{link_to('/appartements/'.$appartement->link_rewrite, Lang::get('Discover'))}}<br/> 
@endforeach 

而且該朗不存在,那麼laravel拋出一個錯誤,這是非常符合邏輯的。

我想知道是否有某種神奇的方式可以讓我不會自動驗證關係是否存在。基本上不把它變成一個大的「那麼是否存在使用」像這個類的每個屬性:

@foreach ($appartements as $appartement) 
    @if($appartement->lang){{$appartement->lang->title}}<br/>@endif 
    @if($appartement->lang){{$appartement->lang->subtitle}}<br/>@endif 
    {{link_to('/appartements/'.$appartement->link_rewrite, Lang::get('Discover'))}}<br/> 
@endforeach 

感謝上的建議。

+0

因此,鏈接顯示標題或副標題是否存在?或者如果Lang不存在,您是否不想顯示該記錄的任何內容? – ryanwinchester

回答

0

我相信有很多的方法可以做到這一點(或至少嘗試)

有此選項,檢查現有和供應默認值,如果沒有,那我認爲4.1是新的(或至少它是新的給我):

@foreach ($appartements as $appartement) 
    {{ $appartement->lang->title or "default if doesn't exist" }}<br/> 
    {{ $appartement->lang->subtitle or "default text if doesn't exist" }}<br/> 
    {{ link_to('/appartements/'.$appartement->link_rewrite, Lang::get('Discover')) }}<br/> 
@endforeach 

或者你可以嘗試這三個中的一個,如果你不希望任何顯示取決於lang所有腦幹的特定記錄語句...

@foreach ($appartements as $appartement) 
    @if ($appartement->lang) 
    // or maybe: 
    // @if ($appartement::has('lang')) 
    // or also maybe: 
    // @if ($appartement->lang->count()) 
    {{ $appartement->lang->title or "default if doesn't exist" }}<br/> 
    {{ $appartement->lang->subtitle or "default text if doesn't exist" }}<br/> 
    {{ link_to('/appartements/'.$appartement->link_rewrite, Lang::get('Discover')) }} 
    <br/> 
    @endif 
@endforeach 
+0

我喜歡第一個解決方案的想法:)感謝您的提示 –