1

メンバーのすべてのフォト ギャラリーを表示したい。これらの写真ギャラリーごとに、ギャラリーからランダムな写真をカバー写真として表示したいと考えています。このプロジェクトには 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 経由でこれを行うのが最善かどうかはわかりませんでした。また、その方法もわかりません。前もって感謝します。

4

1 に答える 1

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 は「ランダム性」を処理します。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;

}
于 2013-09-19T23:36:45.453 に答える