这是我的Matrix
型号:
Matrix -> Finding -> Norm -> Normtype
(finding_id) (norm_id) (normtype_id)
我想要获取Matrixes,首先按finding_id
排序,然后按normtype_id
排序。
根据我的阅读,orderBy
仅适用于实际模型中的键,例如:
public function findings() {
return $this->hasMany('App\Finding')->orderBy('finding_id');
}
我怎样才能在Eloquent中做到这一点?
只是澄清一下,matrix
有多个findings
,每个finding
属于norm
,每个norm
都有一个normtype
}。
答案 0 :(得分:0)
当您对关系定义进行orderBy
调用时,您只会更改相关模型的排序方式。如果您想按相关模型的属性进行排序,则需要自己构建正确的连接。
以下情况应该可以解决您的问题:
Matrix::join('findings', 'finding_id', 'findings.id')
->join('norms', 'findings.norm_id', 'norms.id)
->orderByRaw('finding_id, norms.normtype_id')
->get();