lukoBR 0 Denunciar post Postado Fevereiro 16, 2010 Olá pessoas! Estou com um probleminhão, tenho um sistema de tickets com os seguintes arquivos/funções: TicketController->view(); function view($id = null) { $tickets = $this->Ticket->find("Ticket.id = '$id' AND user_id = {$this->Auth->user('id')}"); $this->set(compact('tickets')); } Model - Classe Ticket <?php class Ticket extends AppModel { var $name = 'Ticket'; var $hasMany = array( 'Reply' => array( 'className' => 'tickets_replies', ), ); } ?> View - view.tpl (troquei a extensão padrão pelo app_controller.php) <?php if(empty($tickets)) { ?> <?php __('The ticket you are looking for does not exist.'); ?> <?php } else { ?> <?php foreach($tickets['Reply'] as $reply) { ?> <table width="100%" border="0"> <tr> <td width="10%"> //////////////////////////////////////////// // Aqui deveria exibir o usuário, só consegui o ID, $reply['username'] não exibe nada além de index não encontrada // <?php echo $reply['user_id']; ?> // <?php echo $reply['username']; ?> // Não pega, index não encontrada //////////////////////////////////////////// </td> <td> <?php echo $reply['message']; ?> </td> </tr> </table> <?php } // end foreach ?> <?php } // end else ?> Queria que pegasse o id do usuario que respondeu o ticket, na tabela replies, e procurasse na tabela users o usuário que possui o mesmo id para exibir suas informações. Alguma dúvida? Agradeço muito a ajuda. OBRIGADO! Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 16, 2010 Faça a query assim e de um "pr" no resulto. Verifique se é oque espera: $opt['conditions'] = array('Ticket.id' => $id, 'user_id' => $this->Auth->user('id')); $result = $this->Ticket->find('first', $opt); pr($result); Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 16, 2010 Já havia dado um pr(), ele exibe o seguinte: Array ( [Ticket] => Array ( [id] => 2 [user_id] => 1 [department_id] => 1 [created] => 2010-02-25 02:37:50 [tittle] => Não consigo acessar minha conta! [message] => testeteste ) [User] => Array ( [id] => 1 [username] => teste [password] => f1f657ff98da2f3e7558bbf4a9674d1362920fe2 ) [Reply] => Array ( [0] => Array ( [id] => 2 [ticket_id] => 2 [user_id] => 2 [created] => 2010-03-02 22:50:23 [message] => asd ) [1] => Array ( [id] => 3 [ticket_id] => 2 [user_id] => 3 [created] => 2010-03-13 20:24:49 [message] => testedaa ) ) ) No finalzinho onde deveria pegar o user_id (no caso do pr() '2' e '3' respectivamente) e procurar na tabela users para obter informações como o e-mail por exemplo... Grato. Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 16, 2010 Então você quer mostrar as informações do usuario no "reply"? Mostre como está seu model. Lembre se colocar: var $belongsTo = array('User');E colocar antes do find: $this->recursive = 2; Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 16, 2010 Sim, é isso que eu quero. O $this->recursive = 2 não obteve efeito, e o $belongsTo já estava colocado. Meu model: <?php class Ticket extends AppModel { var $name = 'Ticket'; var $hasMany = array( 'Reply' => array( 'className' => 'tickets_replies', ), ); var $belongsTo = array( 'User' => array( 'className' => 'users', ) ); } ?> Grato. Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 16, 2010 Quem "pertence à" um User é Reply e não TIcket certo? Você colocou no model errado. Reply belongsTo User. Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 16, 2010 Quem "pertence à" um User é Reply e não TIcket certo? Você colocou no model errado. Reply belongsTo User. Então tenho que criar um model para as replies e usar no meu controller var $uses = array('Ticket', 'Reply'); É isso? Grato pela ajuda ;) PS.: Desculpe os quotes desnecessários, eu ainda não me acostumei =X Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 16, 2010 Bom, problema resolvido, só estou com uma duvida em relação a internacionalização... Se eu tenho o código a seguir function teste($id = null) { // mysql, tudo ok // $this->Session->setFlash(__("The ticket {$id} has been closed.", true)); } Queria que o $id fosse de acordo com o setado no setFlash Por exemplo: msgid "The ticket %id has been closed." msgstr "O ticket %id foi fechado."Só que não consigo tornar %id "dinâmico" Grato, OBRIGADO Compartilhar este post Link para o post Compartilhar em outros sites
lukoBR 0 Denunciar post Postado Fevereiro 16, 2010 Consegui =P No Controller $this->Session->setFlash(sprintf(__("The ticket %s has been closed.", true), $id)); No arquivo de idioma app/locale/pt_BR/LC_MESSAGES/default.po msgid "The ticket %s has been closed." msgstr "O ticket %s foi fechado." Grato pela ajuda, espero também ter ajudado outros usuarios com esta dica Compartilhar este post Link para o post Compartilhar em outros sites