我有一个模型,我想根据关系属性进行排序。
主模型Resultado
有一个关系respondente
,类型为belongsTo
,respondente
有一个关系usuario
。
我想Resultado
这些关系并按属性(列)对结果进行排序usuario
name
。
我试过了
$resultados = Diagnostico'Resultado::with('respondente.usuario')
->orderBy('usuarios.name')->get();
但这会导致"找不到'usuarios.name'列"mysql 错误。
如何根据Resultado
模型的关系对其进行排序?
编辑:
Resultado
模型的表是 diag_resultados
。正如我在评论中所写,我必须使用 join 来获得正确的结果。
你需要做一个子查询
$resultados = Diagnostico'Resultado::with(['respondente.usuario' => function ($query) {
$query->orderBy('usuarios.name', 'asc');
}])->get();
这样的东西应该有效
使用 join
代替with
有效。
$resultados = Diagnostico'Resultado::join('usuarios', 'diag_resultados.respondente_id', '=', 'usuarios.perfil_id')->get()->sortBy('name');