2011-04-19 6 views
6

Tengo una matriz con datos, todos con su propio ID único. Estoy usando el método de descubrimiento ORM ('todos') y la matriz resultante parece algo como esto:Configuración del índice con 'id' en el método Find ('todo') de CakePHP

Array 
(
    [0] => Array 
     (
      [Wijken] => Array 
       (
        [id] => 1 
        [name] => Naam 
        [lat] => 13.37 
        [lon] => 13.37 
        [zoom] => 14 
       ) 

     ) 

) 

Desde mi enrutamiento que estoy recibiendo un identificador único .. Lo que quiero, es re-uso mi matriz y obtener los datos de, digamos, ID 1.

Lo que necesito es que los índices de mi matriz asociativa (devuelto por find ('')) se establezcan con el id del "Wijken" -objeto en sí.

Lo he explicado todo, por si las personas tienen un enfoque diferente. No obstante, no es aceptable consultar la base de datos nuevamente con la ID de param.

Respuesta

15

tratar Set::combine

Para mantener find ('all') estructura (de icc97 comentario):

$idsAsIndexes = Set::combine($wijkens, '{n}.Wijken.id', '{n}'); 

Como alternativa, también se puede extraer un único modelo:

$idsAsIndexes = Set::combine($wijkens, '{n}.Wijken.id', '{n}.Wijken'); 

esperanza de que es lo que estás buscando :)

+0

No sabía acerca de esta función. Gracias por notificar – raultm

+0

Gracias! Pero, probablemente, esto es solo un foreach, ¿verdad? –

+6

Si desea mantener la misma estructura de matriz que con find ('all') es decir, que incluye la clave 'Wijken', necesita '$ wijkensWithIdsAsIndexes = Set :: combine ($ wijkens, '{n} .Wijken.id', ' {n} '); ' – icc97

1

No conozco ninguna forma de tener su identificación como clave en la matriz, y ni siquiera creo que sea posible con Cake sin hacer algo "gracioso".

Pero si lo hace un encontrar de todo, tendría que asumir que se va a procesar los datos y hacer un bucle en algún momento, momento en el que se podía tener algo como:

foreach ($wijkens as $wijken) { 
    [...]do the general things here[...] 
    if ($wijken['Wijken']['id'] == $url_id) { 
     [...]do the thing you want to specifically do to id = 1 here[...] 
    } 
} 

En Por otro lado, entiendo que no quiere ninguna consulta adicional, aunque me parece que es un costo de transacción relativamente menor para mí, y aún es lo que preferiría.

+0

Sí, este enfoque es mi respaldo. Y no quiero hacer nada gracioso, de hecho. Solo esperaba que CakePHP tuviera una solución. –

Cuestiones relacionadas