2012-02-25 9 views
8

Necesito crear tres enlaces aleatorios a otras publicaciones, en mi función de vista de publicación.Cakephp - seleccionar al azar de la base de datos y Ver

controlador:

$random = $this->Post->find('all', array( 
      'order' => 'rand()', 
      'limit' => 3, 
      'conditions' => array('Post.status' => 'ok') 
      )); 

Pero no sé, cómo escribir un foreach para esto.

Gracias

Respuesta

18

Depende de los campos que obtenga de la publicación. Me gustaría cambiar el código controlador sólo un poco a esto:

$this->set('random_posts', $this->Post->find('all', array( 
    'conditions' => array('Post.status' => 'ok'), 
    'order' => 'rand()', 
    'limit' => 3, 
))); 

A continuación, en la vista se desplaza por ellos en el foreach:

<?php 
foreach ($random_posts as $random_post) { 
    echo $this->Html->link($random_post['Post']['name'], array('controller' => 'posts', 'action' => 'view', $random_post['Post']['id'])); 
} 
?> 

Asegúrese de actualizar los campos en el HTML enlace a aquellos que se ajustan a lo que alguna vez regresa del modelo de Publicaciones.

+0

Sí, eso es todo! Gracias – user1183721

1

en mi máquina local este código está trabajando, pero el servidor en vivo que genera ID aleatorio sólo una vez, después de que se repite el mismo id

$max = 
    $this->Article->find('first', 
         array('conditions'=>array('Article.status'=>'Active'), 
         'order' => 'rand()')); 
Cuestiones relacionadas