php - 尝试为每个照片库检索一张随机照片作为封面照片

标签 php mysql codeigniter

我想显示成员(member)的所有照片库。对于这些照片库中的每一个,我想显示来自画廊的随机照片作为封面照片。我正在为这个项目使用 CodeIgniter 2.1.4。最初我以为我可以在 Controller 中运行一个 foreach() 循环,查询随机照片,并将其添加到对象中。但是,当这样做时(当前代码在下面),我收到以下错误“尝试分配非对象的属性”。此错误发生在我尝试将缩略图添加到 $data['albums'] 对象的那一行。

public function index() {
    $data['albums'] = $this->album_model->get_many_by('profile_id', $this->member_id);
    // I need to grab a random photo to display
    foreach ($data['albums'] as $album) {
        $thumb = $this->photo_model->order_by('id', 'rand')->limit(1)->get_by('album_id', $album->id);
        $data['albums']->thumbnail = $thumb->thumbnail;
    }
    $data['current_albums'] = $this->album_model->count_by('profile_id', $this->member_id);
    $this->load->model('profile_model');
    $data['maximum_albums'] = $this->profile_model->with('membership')->get($this->member_id);
    $data['allowed_albums'] = $data['maximum_albums']->membership->albums - $data['current_albums'];
    $this->layout->title(site_name() . ' | My Albums');
    $this->layout->view('member/albums/index', $data);
}

我将如何为对象添加另一个值,这是否是最好的方法?我不确定通过 MySQL 执行此操作是否最好,而且我不确定如何操作。提前致谢。

最佳答案

function get_random_image() {

    $this->db->order_by('id', 'RANDOM'); //takes over randomness
    $this->db->limit(1); //gets only one record
    //$this->db->where(); //if needed
    $query = $this->db->get('images'); //from what table

    return $query->result_array();

}

RANDOM 负责您的“随机性”,请参阅此 thread关于 MySQL 随机性本身。


评论:

foreach ($data['albums'] as $key => $album) {

    $thumb = $this->photo_model->order_by('id', 'rand')->limit(1)->get_by('album_id', $album->id);
    $data['albums'][$key]->thumbnail = $thumb->thumbnail;

}

关于php - 尝试为每个照片库检索一张随机照片作为封面照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18906592/

相关文章:

php - 如何解决 php 中没有数组作为类常量的问题?

php - 如何在另一个 php.ini 文件中包含一个 php.ini 文件?

PHP 最佳实践 : Im loading the $GLOBALS array with a lot of information to be shared between my php pages

带有数组字符串的 MySQL FIND_IN_SET

php - Codeigniter,从分解的字符串中获取值

php - 启动一个有循环的 Linux 作业

php - PHP我的管理员突然停止工作

mysql - 如何在MYSQL中连接3个表,其中每个表的2列具有相同的值

php - 如何使用 codeigniter 3 中的 dbforge 类在时间戳字段中设置更新属性

php - 无法访问 Live Server 中的 codeigniter Controller ,但可以在本地主机中访问(Windows 上的 xampp)