Laravel模板化,不检查是否存在关系

Laravel模板化,不检查是否存在关系,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我有两个模型之间的关系,其定义如下: class Appartement extends Eloquent { public function lang() { return $this->hasOne('AppartementLang')->where('language_id', '=', '2'); } } 所以没什么大不了的 当我尝试做以下事情时: @foreach ($appartements as $appartement) {{$app

我有两个模型之间的关系,其定义如下:

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
如果lang不存在,那么laravel会抛出一个错误,这是非常合乎逻辑的

我想知道是否有某种神奇的方法可以让我不自动验证这种关系是否存在。基本上不会将其转换为一个大的if exists,然后对类的每个属性使用如下:

@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

谢谢你的建议

我相信有很多方法可以做到这一点,或者至少可以尝试一下

有一个选项可以检查现有的,如果没有,则提供默认值,我认为这在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