我想显示成员(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/