join( 'cadastro_apresentacao AS apresentacao', 'apresentacao.id', 'material.apresentacao_id' ) ->join( 'cadastro_unidade_medida as apresentacao_unidade_medida', 'apresentacao_unidade_medida.id', 'material.apresentacao_unidade_medida_id' ) ->whereNull('material.deleted_at') ->where('material.is_ativo', true) ->select([ 'material.id', 'material.codigo_material AS codigo', DB::raw(CadastroMaterialService::getDescricaoCompletaRaw( 'material', 'apresentacao', 'apresentacao_unidade_medida' ) . " AS descricao"), ]) ->orderByRaw(CadastroMaterialService::getDescricaoCompletaRaw( 'material', 'apresentacao', 'apresentacao_unidade_medida' )) ->get(); } public static function show($id) { $material = self::getMaterialModel($id); return (object) [ 'id' => $material->id, 'codigo' => $material->codigo_material, 'descricao' => $material->descricao_completa, ]; } private static function getMaterialModel($id) { $material = Material::find($id); if (is_null($material)) { throw new MaterialNotFoundException(); } return $material; } }