拉拉维尔 5 用关系对雄辩的模型进行排序


Laravel 5 Sort eloquent model with relationships

我有一个模型,我想根据关系属性进行排序。

主模型Resultado有一个关系respondente,类型为belongsTorespondente有一个关系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');