Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    Active Records metodo SELECT

    Ciao a tutti,

    Sulla falsa riga del pattern active records sto implementando questo metedo all'interno delle mie entità.
    Ritenete sia completo e corretto oppure dovrei strutturarlo in modo diverso?

    Codice PHP:
    //metodo
        
    public function getUtenti($criteria NULL ,$value NULL){
            
    $sql ="SELECT * FROM utenti ";
            
    $sql.="LEFT JOIN tecnici ON tec_idtecnico = idutente ";
            if(
    $criteria != "")
                
    $sql.="WHERE ".$criteria;
            return 
    $this->db->fetchAll($sql,$value);
        }

    //metodo db
        
    public function fetchAll($sql, array $params = array()){ 
            return 
    $this->executeQuery($sql$params)->fetchAll(PDO::FETCH_ASSOC); 
        } 

    //chiamata al metodo per ottenere utenti
                                                        
    foreach($user->getUtenti('flagamm = :flagamm', array('flagamm' => 'x')) as $rk){
                                                            echo 
    "<option value=\"".$rk['idutente']."\">".$rk['tec_ragionesociale']."</option>";
                                                        } 
    Il mio dubbio viene dal fatto che, in questo caso sono io che setto i criteri di select, ma nel caso i parametri di arrivassero da un $_POST avrei necessità di formattarli o magari di e non saprei come standarnizzare la cosa...
    Nel senso potre costruire un oggetto $utente al volo utilizzare i metori setter (i quali contengono i controlli di settaggio valore), ma poi non saprei come costruire il metodo di selezione

    Vi prego aiutatemi, è da un po che ci sto sbattendo la testa.
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Mah, una cosa tipo:

    Codice PHP:

           
           
    class UserRecord{
           
                const 
    FIND_ALL_QUERY "SELECT * FROM utenti LEFT JOIN tecnici ON tec_idtecnico = idutente";

                         ....

                public function 
    getUtenti(Array $criteria = array() ,Array $value = array()){ 
                    
                    
    $sql self::FIND_ALL_QUERY;
                    
                    
                    foreach(
    $criteria as $i => $c)
                        {
                            if(
    $i == 0)
                                
    $sql .= " WHERE ";
                                
                            if(
    $i 0)
                                
    $sql .= " AND ";
                                
                            
    $sql .= "(".$c.")";
                        }
                    
                    return 
    $this->fetchAll($sql,$value);
                    
                } 
                
                
                public function 
    getUtentiBy(Array $mapFieldsValue = array())
                {
                
                    
    //considerando una mappa del tipo nomeField => valore
                    
    $fields array_map
                            function(
    $item)
                            {
                                return 
    $item." = :".$item;
                            },
                            
    array_keys($mapFieldsValue));
                            
                    
    $values array_values($mapFieldsValue);
                    
                    return 
    $this->getUtenti($fields$values);
                }
                
                
                public function 
    fetchAll($sql, array $params = array()){  
                    return 
    $this->executeQuery($sql$params)->fetchAll(PDO::FETCH_ASSOC);  
                }  
           
           
           } 
    ? non provata/testata/nulla, giusto buttata lì ... io e l'active record non andiamo molto d'accordo cmq
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ho fatto svariate prove ho capito come procedere, grazie mille.
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    che fico.. ma quindi stai usando una libreria per activeRecords?
    Questa volta, più che un voto.. è favoreggiamento.

  5. #5
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    No mi sto creando le classi e strutturando gli oggetti in parvenza active records, voglio capire bene come funzionano le classi e i pattern (almeno i più semplici) prima di buttarmi su un framework o libreria.
    Dato che prima di capire bene come funzioni, bisogna avere una conoscenza molto avanzata....
    Almeno questo è quello che penso, in base alle esperienze fatte.

    Il Pattern ActiveRecord mi sembra molto dispendioso in termini di risorse, però molto semplice e molto logico.... dispendioso perchè molte volte carichi risorse che magari non ti servono, ma avere a a disposizione tutto e subito mi eccita fanxxlo le risorse...
    Che mestiere difficile.....essere da soli ancora di più

  6. #6
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Il Pattern ActiveRecord mi sembra molto dispendioso in termini di risorse, però molto semplice e molto logico.... dispendioso perchè molte volte carichi risorse che magari non ti servono, ma avere a a disposizione tutto e subito mi eccita fanxxlo le risorse...
    ti ecciterebbe di più il lazy loading :P
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Quello mi ha fatto proprio venire....
    Tempo fa ne avevamo parlato insieme....
    Per ora ho integrato questo
    http://www.html.it/articoli/lazy-loa...-oop-di-php-1/
    è molto semplice e mi sono trovato bene.
    Poi quando le cose si complicheranno utilizzerò qualche libreria da hoc
    Che mestiere difficile.....essere da soli ancora di più

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.