如何对Eloquent子查询进行排序

时间:2014-08-03 13:27:24

标签: php laravel-4 eloquent

我有两个表格:团队和成员。模型以n:m关系连接,在我的团队视图中,我将建立一个foreach循环,以便让所述团队的成员像这样:

@foreach( $team->teammember as $member )
    {{ $member->firstname }} {{ $member->lastname }}
@endforeach

到目前为止,一切都很棒且工作正常,我的问题是,我如何获得按姓氏排序的成员列表?在我的控制器中,我没有获得成员,因为连接是通过模型完成的,我只能对团队进行排序,而不是成员。

2 个答案:

答案 0 :(得分:2)

如果您总是希望按姓氏排序,您还可以直接在模型的关系函数中添加sortBy调用。

    public function teammember() {
    return this->hasMany('Teammember')->orderBy('last_name');
    }

在这种情况下,我更喜欢Darren Taylor提出的保持灵活性的单独方法,但很高兴知道你也可以直接链接到关系函数。

答案 1 :(得分:1)

基本上,你可以这样做:

@foreach( $team->teammember()->orderBy('last_name')->get() as $member )
    {{ $member->firstname }} {{ $member->lastname }}
@endforeach

但是,如果你计划做很多事情,可能最好把它抽象到模型中。