Cakephp - случайный выбор из базы данных и просмотр - PullRequest
9 голосов
/ 26 февраля 2012

Мне нужно создать три случайные ссылки на другие сообщения в моей функции просмотра сообщений.

Контроллер:

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

Но я не знаю, как написать для этого foreach.

Спасибо

Ответы [ 2 ]

19 голосов
/ 26 февраля 2012

Это будет зависеть от полей, которые вы получите от Post. Я бы немного изменил код контроллера на этот:

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

Затем в представлении вы просматриваете их в 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']));
}
?>

Обязательно обновите поля в ссылке HTML на те, которые соответствуют тому, что когда-либо возвращалось из модели Post.

1 голос
/ 06 ноября 2015

На моей локальной машине этот код работает, но на работающем сервере он генерирует случайный идентификатор только один раз, после чего повторяет тот же идентификатор

$max =
  $this->Article->find('first',
                       array('conditions'=>array('Article.status'=>'Active'),
                       'order' => 'rand()'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...