Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danilo Miranda_45572

where com Laravel e Doctrine mysql

Recommended Posts

Pessoal, estou alterando uma função em um código de um sistema comprado pela empresa onde trabalho, porém como é um método novo utilizando um framework que ainda não havia trabalhado (Laravel) tenho dificuldades em fazer uma simples comparação de dados.

Explicando o objetivo do código: Se o usuário for administrador, ele lista todos os "Albums", como podemos verificar no código abaixo:

if($this->data['users']->role == "admin" ){
        $toReturn = array();
        if($dir != 0){
            $toReturn['current'] = mediaAlbums::where('id',$dir)->get()->first()->toArray();
        }
        $toReturn['albums'] = mediaAlbums::where('albumParent',$dir)->get()->toArray();
        $toReturn['media'] = mediaItems::where('albumId',$dir)->orderBy('mediaTitle', 'ASC')->get()->toArray();
$toReturn['dormitory'] = dormitories::get()->toArray();
        return $toReturn;
}

Até aqui tudo Ok.

Na segunda parte, se o usuário for "student" ele poderá listar apenas os álbuns para determinado usuário.

if($this->data['users']->role == "student"){
$cursoAluno = $this->data['users']->dormitoryId;
$toReturn = array();
        if($dir != 0){
            $toReturn['current'] = mediaAlbums::where('id',$dir)->get()->first()->toArray();
        }
        $toReturn['albums'] = mediaAlbums::whereIn('dormitoryId', $cursoAluno)->get()->toArray();
        $toReturn['media'] = mediaItems::where('albumId',$dir)->orderBy('mediaTitle', 'ASC')->get()->toArray();
$toReturn['dormitory'] = dormitories::get()->toArray();
        return $toReturn;
}

Pra fazer a comparação, na tabela do usuário (users) armazenamos um código dizendo a qual grupo ele pertence, em texto simples no campo dormitoryId. Valor armazenado na variável "$cursoAluno".

Na tabela do album (mediaAlbums) armazenamos os grupos que determinado album pertence no campo dormitoryId, com json a partir de multi select...ficando os valores armazenados desta forma : ["1","2"]

O que eu preciso comparar é: Mostrar apenas os albums que no campo "dormitoryId" tem o valor do grupo do aluno armazenado na variável $cursoAluno.

Alguém tem uma solução?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

É por motivos assim que eu sempre digo: Não use campos multivalorados. É sempre uma tremenda dor de cabeça fazer um simples select como esse

 

Veja a modelagem ideal: http://rberaldo.com.br/usando-campos-multivalorados/

 

Você terá de fazer vários WHEREs, cada um com um dos números presentes no array $cursoAluno

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.