Skip to content

Como ocultar um campo de um model em determinada rota? #140

@almino

Description

@almino

Eu tenho uma tabela topics com os campos id, name, picture.

Eu quero obter o JSON paginado, mas sem a coluna picture. Como faço isso?

Código usado atualmente: https://gist.github.com/almino/227707baa21037fbe3c4bdd95308515c

Resultado:

{
  "data":[
    {
      "id":1,
      "name":"Cimento de On\u00f4metro de Vidro",
      "picture":"data:image\/jpeg;base64,\/9j\/4AAQSkZJRgA...wDMhCEV\/9k=",
      "created_at":{
        "date":"2017-09-24 17:23:25.000000",
        "timezone_type":3,
        "timezone":"America\/Fortaleza"
      },
      "updated_at":null
    }
  ],
  "links":{
    "first":"http:\/\/app.dev\/api\/topics?page=1",
    "last":"http:\/\/app.dev\/api\/topics?page=1",
    "prev":null,
    "next":null
  },
  "meta":{
    "current_page":1,
    "from":1,
    "last_page":1,
    "path":"http:\/\/app.dev\/api\/topics",
    "per_page":15,
    "to":1,
    "total":1
  }
}

Activity

deleugpn

deleugpn commented on Sep 24, 2017

@deleugpn

Tira picture do array no Resource?

almino

almino commented on Sep 24, 2017

@almino
Author

Tirar picture do Resource vai afetar todas as vezes que eu for usar o resource individualmente.

davidrtpereira

davidrtpereira commented on Sep 24, 2017

@davidrtpereira

No model, é possível reescrever a variável $hidden, que é um array de colunas que você deseja esconder.
Desta maneira é só colocar

protected $hidden = ['picture'];

No respectivo model desta coluna.

almino

almino commented on Sep 25, 2017

@almino
Author

Isso irá ocultar de todos os lugares. Eu queria ocultar somente numa rota específica.

zabaala

zabaala commented on Sep 25, 2017

@zabaala

Cria um outro TopicCollection, que retorna um outro Topic resource, com a estrutura que você quer.

Isso claramente é um caso de uso. Sua implementação deve ser baseada nesta necessidade.

deleugpn

deleugpn commented on Sep 26, 2017

@deleugpn

Achei o assunto bem mais interessante do que aparentava. Escrevi um artigo sobre o tema.

https://medium.com/@deleugpn/hiding-api-fields-dynamically-laravel-5-5-82744f1dd15a

almino

almino commented on Sep 29, 2017

@almino
Author

A alternativa do @zabaala funciona, mas não parecia elegante. Obrigado, @deleugpn.

omarkdev

omarkdev commented on Oct 2, 2017

@omarkdev

O problema já foi solucionado no artigo do @deleugpn, estou fechando esta issue por enquanto.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @almino@zabaala@deleugpn@omarkdev@davidrtpereira

        Issue actions

          Como ocultar um campo de um model em determinada rota? · Issue #140 · laravelbrasil/forum