cake-php
[Arriba] [Todas las Listas]

Re: Modelo::AfterFind $formato de resultados, asociaciones

To: cake-php@xxxxxxxxxxxxxxxx
Subject: Re: Modelo::AfterFind $formato de resultados, asociaciones
From: Vanja Dizdarević <lex.non.scripta@xxxxxxxxx>
Date: Thu, 27 Jun 2013 13:25:02 -0700 (PDT)
Delivery-date: Thu, 27 Jun 2013 16:25:15 -0400
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=x-beenthere:date:from:to:message-id:in-reply-to:references:subject :mime-version:x-original-sender:reply-to:precedence:mailing-list :list-id:x-google-group-id:list-post:list-help:list-archive:sender :list-subscribe:list-unsubscribe:content-type; bh=KM5wbsnN6Ne3Pj+l9E5XTBNaINm/PymFHC8yJMS7+OE=; b=gMyPFaaywJPkNCbATDTST1Q4TdJlZzb7nn7YARwHi1qJ56/gV/STXRhGeOJcVE775a FRLwIeRJOP0DQJ/ilnd09SH3+YBGQHP+J7A2Jl9ZeDKSDpYqBuKdlrUW0G/iG8hyhc5Y /IfbgjptBiEm3qmiLNBNHE21OBDixLaijjdVAfqRDQ73YmeZ6IrarWsZpC5IQW94CZ6u VUL9eoPRb0ZnUocf1hvZblLXpXTKxIrdmBhrdr1T8xg8swzmJdU3pFwYUa7/9mGpSMGU 4FAbiFL+50ocI3KsQGqQg2WV6ed+DdHJrsp69o4foRNqN+PAqko5pniItxBZlE4SWsfd plmA==
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-beenthere:date:from:to:message-id:in-reply-to:references:subject :mime-version:x-original-sender:reply-to:precedence:mailing-list :list-id:x-google-group-id:list-post:list-help:list-archive:sender :list-subscribe:list-unsubscribe:content-type; bh=KM5wbsnN6Ne3Pj+l9E5XTBNaINm/PymFHC8yJMS7+OE=; b=DVXTr2f4j70d5Q7I6ckWrhPjnBEYRInESx+qJDeuX8Qcd7PAXIyM2f+jaFzZ6mXpxr qk4msP3OIDgePWGktFlDH2QYU7op8inYee3baStekwN0lQF60/uG9VmFcUe/kaKsIUWM +aS2W9KZY6zmI3KvHuC43MuqxGIcDqAw9wbn0N2j4Vbiec85Kkv2rq29k/FPHs8pT4uA zEvWHPVe7EzhPdxE8xyObCdwWcz2mWzsiQ4E6lEkFBSwYN93FRAv9pbrqt2BHBPgrBwY aFtip8DAzcoKiSnoRF+yMnS0RTr0r4/k+1LQLzZ5UYWT7HEm/ai2ArPhbhqQTubajjt5 lUcQ==
Envelope-to: traductor@xxxxxxxxxxx
In-reply-to: <c253ea6d-61f4-4357-ba0f-e38cad818f32@googlegroups.com>
List-archive: <http://groups.google.com/group/cake-php>
List-help: <http://groups.google.com/support/>, <mailto:cake-php+help@googlegroups.com>
List-id: <cake-php.googlegroups.com>
List-post: <http://groups.google.com/group/cake-php/post>, <mailto:cake-php@googlegroups.com>
List-subscribe: <http://groups.google.com/group/cake-php/subscribe>, <mailto:cake-php+subscribe@googlegroups.com>
List-unsubscribe: <http://groups.google.com/group/cake-php/subscribe>, <mailto:googlegroups-manage+1003367825667+unsubscribe@googlegroups.com>
Mailing-list: list cake-php@xxxxxxxxxxxxxxxx; contact cake-php+owners@xxxxxxxxxxxxxxxx
References: <12f3399f-39a3-4690-8bc8-986e870da0a0@googlegroups.com> <c253ea6d-61f4-4357-ba0f-e38cad818f32@googlegroups.com>
Reply-to: cake-php@xxxxxxxxxxxxxxxx
Sender: cake-php@xxxxxxxxxxxxxxxx
Cuando "solucionado" en el hilo enlacé a en el correo original:

         función pública *afterFind($resultados, $primario = falso) 
                #cnj (el método_existe($esto, '*doAfterFind')) 
                          #cnj ($primario) 
                                   #unknown{^*foreach ($resultados como $clave => $*val) 
                                            #cnj (*isset($*val[$esto->*alias])) 
                                             
        $#nom[$llave][$esto->*alias] = 
$esto->*doAfterFind($resultados[$llave][$esto->*alias]); 
                                                } 
                                      } 
                          } más 
                                  #cnj (*isset($resultados[$esto->*primaryKey])) 
                                           $#verbcj = 
$esto->*doAfterFind($resultados); 
                                   } más 
                                            #unknown{^*foreach ($resultados como $clave => 
$*val) 
                                                     #cnj 
(*isset($*val[$esto->*alias])) 
                                                              #cnj 
(*isset($*val[$esto->*alias][$esto->*primaryKey])) 
                                                               
        $#nom[$llave][$esto->*alias] = 
$esto->*doAfterFind($resultados[$llave][$esto->*alias]); 
                                                              } más 
                                                               
        #unknown{^*foreach ($resultados[$llave][$esto->*alias] cuando $llave2=> $*val2) 
                                                                        
        $#nom[$llave][$esto->*alias][$llave2] = 
$esto->*doAfterFind($resultados[$llave][$esto->*alias][$llave2]); 
                                                                           
   } 
                                                                    } 
                                                          } 
                                                } 
                                      } 
                           } 
                } 
                 resultados $de regreso; 
         } 
}

Esto presuntamente aplica el mismo "*doAfterFind" método a todos los registros, 
a toda costa del formato $de variedad de resultados pasado, tomando a cuenta todo 
asociaciones posibles de un modelo primario a este modelo.

Las cuestiones reales es: Qué es todos formatos de variedad podemos esperar en 
la $variedad de resultados?

Para citar el *docs:
 Si un modelo es *queried como una asociación el formato de$resultados puede diferir; 
en vez del resultado normalmente conseguirías de un encontrar operación, puedes 
conseguir esto:

$variedad = de resultados(
    'campo_1' => 'valor1',
    'campo_2' => 'valor2');

Tan, si deseo el *afterFind para encontrar el dato en la variedad de resultados, tengo que 
probar el formato de la variedad o puede confío en $valor primario?

Esto es tan confundiendo.

-- 
Gustarnos en *FaceBook *https://www.facebook.com/*CakePHP
nos Encuentra en *Twitter *http://*twitter.*com/*CakePHP

--- 
Recibiste este mensaje porque eres *subscribed al *Google Grupos "*CakePHP" grupo.
A *unsubscribe de este grupo y la parón que recibe *emails de él, enviar un *email a pastel-*php+unsubscribe@xxxxxxxxxxxxxxxx.
A correo a este grupo, envía *email a pastel-php@xxxxxxxxxxxxxxxx.
Visita este grupo en *http://grupos.*google.*com/Pastel/de grupo-*php.
Para más opciones, visita *https://grupos.*google.*com/Los Grupos/optan_fuera.


As "solved" in the thread I linked to in the original post:

         public function afterFind($results, $primary = false) { 
                if (method_exists($this, 'doAfterFind')) { 
                          if ($primary) { 
                                   foreach ($results as $key => $val) { 
                                            if (isset($val[$this->alias])) 
{ 
                                             
        $results[$key][$this->alias] = 
$this->doAfterFind($results[$key][$this->alias]); 
                                                } 
                                      } 
                          } else { 
                                  if (isset($results[$this->primaryKey])) { 
                                           $results = 
$this->doAfterFind($results); 
                                   } else { 
                                            foreach ($results as $key => 
$val) { 
                                                     if 
(isset($val[$this->alias])) { 
                                                              if 
(isset($val[$this->alias][$this->primaryKey])) { 
                                                               
        $results[$key][$this->alias] = 
$this->doAfterFind($results[$key][$this->alias]); 
                                                              } else { 
                                                               
        foreach ($results[$key][$this->alias] as $key2=> $val2) { 
                                                                        
        $results[$key][$this->alias][$key2] = 
$this->doAfterFind($results[$key][$this->alias][$key2]); 
                                                                           
   } 
                                                                    } 
                                                          } 
                                                } 
                                      } 
                           } 
                } 
                 return $results; 
         } 
}

This supposedly applies the same "doAfterFind" method to all records, 
regardless of the passed $results array format, taking into account all 
possible associations of a primary model to this model.

The actual questions is: What are all array formats we can expect in the 
$results array?

To quote the docs:
 If a model is queried as an association the format of$results can differ; 
instead of the result you would normally get from a find operation, you may 
get this:

$results = array(
    'field_1' => 'value1',
    'field_2' => 'value2');

So, if I wish the afterFind to find the data in the results array, I have 
to test the format of the array or can I rely on $primary value?

This is so confusing.

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to cake-php@xxxxxxxxxxxxxxxx.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.


<Anterior por Tema] Tema Actual [Siguiente por Tema>