2014-03-26 45 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

我喜欢第一个解决方案的想法:)感谢您的提示 –