多对多关系:按数据透视 table 排序无效

many-to-many relationship: order by on pivot table not working

我在 schoolassociate 模型之间有这些关系:

// School model
public function associates()
{
    return $this->belongsToMany('Associate', 'school_associate', 'school_id', 'associate_id')
        ->withPivot('start_date', 'end_date');
}

// Associate model
public function schools()
{
    return $this->belongsToMany('School', 'school_associate', 'associate_id', 'school_id')
        ->withPivot('start_date', 'end_date');
}

我需要获得 start_date 订购的一所学校的所有员工。

这是我尝试过但没有成功的方法(在这次尝试中我在所有学校中搜索):

dd(\App\Associate::with(['schools' => function ($q) {
    $q->orderBy('pivot_start_date', 'desc');
}])->toSql());

我得到这个 sql(注意没有 order by 子句):

select * from `associate`

我试过这样编辑关系:

// Associate model
public function schools()
{
    return $this->belongsToMany('School', 'school_associate', 'associate_id', 'school_id')
        ->withPivot('start_date', 'end_date')
        ->orderBy('pivot_start_date', 'desc'); // also tried without "pivot_"
}

根据this post,我也试过了:

// Associate model
public function schools()
{
    return $this->belongsToMany('School', 'school_associate', 'associate_id', 'school_id')
        ->withPivot('start_date', 'end_date')
        ->orderBy('school_associate.start_date', 'desc');
}

但我总是得到相同的查询,但结果没有排序。

我以这种方式使用查询生成器解决了问题。
此函数在 Associate 模型中:

public function scopeLast($query, $school_ids = [])
{
    $query->join('school_associate', "{$this->table}.{$this->primaryKey}", '=', 'school_associate.associate_id')
        ->join('school', 'school.school_id', '=', 'school_associate.school_id')
        ->whereIn('school.school_id', $school_ids)
        ->orderBy('school_associate.start_date', 'desc');

    return $query;
}