访问模型中的孩子

时间:2014-11-29 18:23:36

标签: php laravel-4 blade

我有两个模特之间的关系。我没有通过@foreach来浏览视图中的每个孩子,而是希望根据条件手动访问每个孩子,但不知道如何实现这一点。

父模型代码段

public function childs()
{
    return $this->hasMany('Child');
}

儿童模型摘录

public function parent()
{
    return $this->belongsTo('Parent');
}

view.blade.php

@foreach ($parents as $parent)
    @if ($parent->childs()->count() == 2)
        {{ $parent->find(1)->childs()->where('corner', '=', 'A')->first()->id }}
         and
        {{ $parent->find(1)->childs()->where('corner', '=', 'B')->first()->id }}
    @endif
@endforeach 

我想这样做的原因是因为总会只有2个孩子,我想按照特定的顺序展示它们,我想把它们放在'和'之间的话。

有了这个,它会带来满足条件的表中总子项的第一个结果,而不仅仅是属于我选择的符合条件的父项的子项。我之所以放第一个()是因为我得到了多个结果,但实际上只有一个孩子符合这个条件。

我非常确定我是否过于复杂,需要采用更简单的方法。

感谢您的帮助!!!


从Mudonat回应,这就是我所做的。

父模型代码段

public function childs()
{
    return $this->hasMany('Child');
}

儿童模型摘录

public function parent()
{
    return $this->belongsTo('Parent');
}

public function scopeCorner($query, $corner)
{
    return $query->whereCorner($corner)->first();
}

view.blade.php

@foreach ($parents as $parent)
    @if ($parent->childs()->count() == 2)
        {{ $parent->childs()->corner('A')->id }}
        and 
        {{ $parent->childs()->corner('B')->id }}
    @endif
@endforeach 

1 个答案:

答案 0 :(得分:0)

您可以使用范围使其更简单一些 。 http://laravel.com/docs/4.2/eloquent#query-scopes