如何通过兰德和另一个字段来获取带有蛋糕php 3的顺序的记录?

时间:2017-03-04 04:57:28

标签: cakephp

我从数据库中获取视频ID,随机顺序限制为30,但是想在蛋糕php 3中显示发布日期的视频。请协助

1 个答案:

答案 0 :(得分:0)

事实上,您的问题非常模糊,而且您没有提供任何代码,这就是您投票的原因。下次尝试显示你尝试了一些东西,因为即使你这样做了,这也是一个两行长的问题。

我理解:

  1. 您希望从某个数据库中获取30个随机视频;
  2. 您希望按发布日期(desc)对其进行排序。
  3. 所以,试试:

    // Retrieve all ids
    $ids = $this->Videos->find('list')->toArray();
    $ids = array_keys($ids);
    
    // Select 30 random ids from the ids list
    $total = count($ids);
    $count = 30 <= $total ? 30 : $total;
    $selectedIds = [];
    for($i = 0; $i < $count; $i++) {
        $newId = -1;
    
        do {
            $newId = rand(0, $total - 1);
        } while(!in_array($newId, selectedIds));
    
        $selectedIds[] = $newId;
    }
    
    // Now you got your ids in an array
    $videos = $this->Videos->find('all')
        ->where(['id' => $selectedIds])
        ->order(['publish_date' => 'DESC'])
        ->limit(30);