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

时间:2013-09-19 23:30:13

标签: php mysql codeigniter

我想显示会员的所有照片画廊。对于每个照片画廊,我想从画廊中随机显示照片作为封面照片。我在这个项目中使用CodeIgniter 2.1.4。最初我以为我可以在控制器中运行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做这件事是否最好,而且我不确定如何。提前谢谢。

1 个答案:

答案 0 :(得分:0)

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;

}
相关问题