1

Eu tenho um select onde faço uma busca a partir de um id informado, No postman faco a um POST mandando um array no como no exemplo abaixo

[
{  
      "id":"1"
},
{  
      "id":"2"
}
]

No repositório faço a busca desses id para poder obter todas as informações sobre eles.

como ficaria no meu repositório na hora de fazer a busca e trazer as informações dos ids informados atualmente eu faço uma busca simples com um get();

Repository:

Public function listarId($id)
    {
    return $this->produto = DB::table('produtos')
    ->where('id', $id)
    ->get();  
     }

e mando como paramentro no postman um id de cada vez

  {  
  "id":"2"
  }

no meu controller atualmente esta da seguinte maneira, eu mando request com a variavel $id, e retorno a select que fiz no repository.

   public function lista(Request $request) 
    {      

        $id = $request->input('id');

        return $this->produtosRepository->listarId($id);
    }

e eu quero poder mandar um array com varios ids

1 Resposta 1

0

Você em vez de usar o where(); poderia utilizar o whereIn();

Por exemplo:

 return $this->produto = DB::table('produtos')
->where('id_admin', $array_id)
->get();

Aonde esse $array_id seria um array de id's.

OBS.: o whereIn necessariamente precisa receber um array unidimensional por exemplo [1,2,3]

Com isso ele va fazer uma query parecida com :

Select * from produtos where id_admin in (1,2);

Espero ter ajudado.

12
  • No controllador eu envio eu tenho um Request onde passo o parâmetro id para fazer esta busca, porem retorna null, quando envio dessa maneira [ { "id":"1" }, { "id":"2" } ] tem alguma maneira para conseguir pegar as informaçoes dessa array para fazer a busca
    – Jess
    Commented 29/01/2019 às 18:39
  • o id que passa é gerado aqui $idP = $this->produtosRepository->lista($id);?
    – Bulfaitelo
    Commented 29/01/2019 às 18:41
  • sim, em teria sim, porem se eu envio como um array com mais de dois $id para fazer a busca no banco, retorna nulo, porem se envio apenas um {"id" : "5"} ele reconhece normalmente
    – Jess
    Commented 29/01/2019 às 18:46
  • Sim eu tenho que entender como você pega esses valores, quando usar o WhereIn você precisa passar o array simples por exemplo: whereIn('id', [1,2,3]);
    – Bulfaitelo
    Commented 29/01/2019 às 18:47
  • bom editei a pergunta acho que agora da para compreender melhor
    – Jess
    Commented 29/01/2019 às 18:54

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .