2012-02-25 20 views
8

私のポストビュー機能では、他のポストへの3つのランダムなリンクを作成する必要があります。Cakephp - ランダムにデータベースから選択してください。

コントローラー:

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

しかし、私は、このためのforeachを書く方法を、知りません。

ありがとうございました

答えて

18

これは投稿から返されるフィールドによって異なります。私はこれまでわずかコントローラコードを変更します

$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モデルから戻って来ることに従うものへのリンク。

+0

を繰り返した後、ライブサーバー上で、それは、一度だけランダムIDを生成し、はい、それはそれです!ありがとう – user1183721

1

は私のローカルマシン上でこのコードが動作しているが、それは同じid

$max = 
    $this->Article->find('first', 
         array('conditions'=>array('Article.status'=>'Active'), 
         'order' => 'rand()')); 
関連する問題