Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [cakePHP] Containable che mi ignora un Model

    Questo stralcio di codice è preso direttamente dal book di cakephp...

    Codice PHP:
    $this->User->find('all', array(
        
    'contain'=>array(
            
    'Profile',
            
    'Account' => array(
                
    'AccountSummary'
            
    ),
            
    'Post' => array(
                
    'PostAttachment' => array(
                    
    'fields' => array('id''name'),
                    
    'PostAttachmentHistory' => array(
                        
    'HistoryNotes' => array(
                            
    'fields' => array('id''note')
                        )
                    )
                ),
                
    'Tag' => array(
                    
    'conditions' => array('Tag.name LIKE' => '%happy%')
                )
            )
        )
    )); 
    Non fa altro che usare il Containable Behavior che premette di recuperare i dati che realmente ci interessano limitando le query da eseguire a differenza di recursive...

    Il mio codice è praticamente simile solo che non recupera i dati dal Model Destination...

    Codice PHP:

    $order 
    $this->Order->find('first',    array(
                                            
    'contain' =>    array(
                                                            
    'User' =>    array(
                                                                        
    'Destination' =>    array(
                                                                                            
    'fields' => array('id''contact')
                                                                                            ),
                                                                        
    'fields' => array('id''claim')
                                                                        ),
                                                            
    'Payment' => array('fields' => array('id''method'))
                                                            ),
                                            
    'conditions' => array('Order.id' => $id),
                                            
    'fields' => array('id''items''products')
                                            )
                                ); 
    Idee sul perché?

    Le relazioni sono
    - Order belongsTo User hasOne Destination
    - Order hasOne Payment

  2. #2
    fatti stampare l'sql debug e vedi che query esegue, magari sbaglia a costruire la query...cake lo fa spesso

    oppure trova una soluzione diversa piuttosto di sti Containable che sono proprio una soluzione orrida
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Queste sono le due query che genera quel comando...

    codice:
    SELECT `Order`.`id`, `Order`.`items`, `Payment`.`id`, `Payment`.`method`, `User`.`id`, `User`.`claim` FROM `orders` AS `Order` LEFT JOIN `users` AS `User` ON (`Order`.`user_id` = `User`.`id`) LEFT JOIN `payments` AS `Payment` ON (`Payment`.`order_id` = `Order`.`id`) WHERE `Order`.`id` = 11 LIMIT 1
    SELECT `Payment`.`id`, `Payment`.`method` FROM `payments` AS `Payment` WHERE `Payment`.`order_id` = 11
    Non capisco perché non venga menzionato neanche Destination...
    Nessun errore o warning...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.