Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

CakePHP - Cómo realizo esta consulta?

Estas en el tema de CakePHP - Cómo realizo esta consulta? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, en la tabla busco el post por id y de ahi quiero extraer aparte el user_id, es decir, el usuario... Yo hago esto: Código ...
  #1 (permalink)  
Antiguo 04/12/2013, 06:24
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
CakePHP - Cómo realizo esta consulta?

Hola,

en la tabla busco el post por id y de ahi quiero extraer aparte el user_id, es decir, el usuario...

Yo hago esto:
Código PHP:
         //Obtengo el id del post por url
        
$postId $this->request->params['pass'][0];
        
        
//Consulto todos los datos de ese post
        
$searchPost $this->Post->find('all',array( 
                    
'conditions' => array('Post.id' => $postId))); 
...y si le hago un pr() me salen todos los datos del post:

Código:
Array
(
    [0] => Array
        (
            [Post] => Array
                (
                    [id] => 1
                    [title] => Titulo del post
                    [body] => Mensaje del post
                    [created] => 2013-12-03 09:12:24
                    [modified] => 2013-12-03 10:15:58
                    [user_id] => 3
                )

        )

)

...yo lo q necesito es [user_id] => 3 solo, como lo extraigo en una variable?
Tiene q ser del tipo ['Post']['user_id']?

Gracias
  #2 (permalink)  
Antiguo 04/12/2013, 07:21
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años
Puntos: 4
Respuesta: CakePHP - Cómo realizo esta consulta?

Código PHP:
Ver original
  1. $pepe = $searchPost['Post']['user_id']

Aunque segun veo tu debug, creo que no estan bien relacionados los controladores. Porque veo que no lo limitas con el "recursive"
Y no te trae los modelos asociados

Deberia ser algo similar a esto.
Código PHP:
Ver original
  1. (
  2.     [0] => Array
  3.         (
  4.             [Post] => Array
  5.                 (
  6.                     [id] => 1
  7.                     [title] => Titulo del post
  8.                     [body] => Mensaje del post
  9.                     [created] => 2013-12-03 09:12:24
  10.                     [modified] => 2013-12-03 10:15:58
  11.                     [user_id] => 3
  12.                 )
  13.              [User] => Array
  14.                 (
  15.                     [id] => 3
  16.                     [username] => pepe
  17.                )
  18.  
  19.         )
  20.  
  21. )



Y por otro lado, si lo que buscas es un solo Post, utiliza el find('first').
  #3 (permalink)  
Antiguo 04/12/2013, 07:26
 
Fecha de Ingreso: abril-2013
Mensajes: 61
Antigüedad: 11 años
Puntos: 4
Respuesta: CakePHP - Cómo realizo esta consulta?

Tambien al metodo find, se le puede pasar como argumento, en el array de opciones. 'fields' => 'Post.user_id'
  #4 (permalink)  
Antiguo 04/12/2013, 07:51
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: CakePHP - Cómo realizo esta consulta?

Hola,
si hago uso del recursive pero en este caso solo era para ver si me buscaba los datos.

Yo lo hice de esa forma tambien, $pepe = $searchPost['Post']['user_id'], pero me dice q no encuentra el indice Post:

Cita:
Notice (8): Undefined index: Post [APP/Controller/PostsController.php, line 57]
Lo demas lo tengo tal cual lo puse en este tema
  #5 (permalink)  
Antiguo 04/12/2013, 08:10
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: CakePHP - Cómo realizo esta consulta?

Aca estaba el tema [0] => Array, entonces utilice findById... ahora sigo a ver si puedo completar mi objetivo, el del tema anterior

Etiquetas: cakephp, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:40.