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