lukoBR 0 Denunciar post Postado Fevereiro 12, 2010 APAGADO Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 13, 2010 Bem, logico. A unica coisa que você está fazendo é sobrescrever o valor. :P while($i > '0') { // While defeituoso $user[] = $this->User->findAll("id = '". $replies[$i - 1]['Replies']['user_id'] ."'"); $i--; } $this->set('user', $user); // Dveria setar um user para cada usuário pego em $user Deste modo, iria estar tudo em "user". Não entendi a estrutura ai, por isso pergunto: Para que este while? Ele é realmente necessario? Ao meu ver você poderia fazer tudo num unico find all, apenas utilizando os conditions. Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 13, 2010 APAGADO Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 13, 2010 Aquele "indice" desnecessário, na verda é necessario. Pois você está buscando todos (find all). Entao ele tem que ter um indice para cade resultado. Aí, na view, basta fazer um foreach para percorrer todos os resultados encontrados: foreach($usuarios_vindo_pelo_metodo_set as $item){ echo $item['Usuario']['id']; echo $item['Usuario']['username']; //... } Você nunca vai conseguir fazer isso, apenas: $user['username']Quer dizer, até existem algumas formas, mas não vale o esforço.O resultado de find all sempre será neste estilo: $var[x][Model][campo]. Veja exemplos: $usuarios[0]['Usuario']['username']; // pega o primeiro registro $usuarios[1]['Usuario']['username']; // pega o segundo registro $usuarios[2]['Usuario']['username']; // pega o terceiro registro $produtos[0]['Produto']['fabricante']; // pega o primeiro registro $produtos[1]['Produto']['fabricante']; //.... E outra coisa. O método findAll está ultrapassado e deixará de existir em futuras versões (se nao me engano ja tiraram na 1.3). Agora utilize apenas o find(). Exemplo: $this->Usuario->find('all', array('conditions' => array('username' => 'lucaswxp'));De uma olhada na documentação---------------------------------- Se você for SEMPRE pegar apenas um registro do DB, utilizar find('first') ao invés de find('all'). Aí ficaria no formato $dados['Model']['campo'] Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 13, 2010 APAGADO Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 13, 2010 É só fazer um IF o.O if($aa['TicketsDepartment']['department_id'] == $bb['Ticket']['department_id']){ // é igual }E isso mesmo? (basta adaptar ao seu caso)Se você quer retornar apenas dados que cumpram esta condição, então coloque-a diretamente no find('all') do controller. OBS: Se o relacionamento for HABTM e você estiver passando com problemas de find's etc (o cake não esta fazendo os relacionamentos para você), sugiro que utilize o HabtmBehavior. Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 13, 2010 APAGADO Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 13, 2010 Está muito confuso sua dúvida. Tente explicar novamente, mas, parece apenas ser erro de logica. Porém, sobre isso: ele busca como se fosse a url localhost/ticket/view/2 ao invés de localhost/ticket/view/20Creio que tenha haver com a condição que você está fazendo:$tickets = $this->Ticket->find("ticket_id = '$id' AND user_id = '". $this->Auth->user('id') ."'");Se aquele $id for aquele escrito na url (localhost/ticket/view/20). Faz sentido esperar aquele resulta. Averigue isso :) Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 15, 2010 APAGADO Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 15, 2010 APAGADO Compartilhar este post Link para o post Compartilhar em outros sites