私のトピックのリストは、デフォルトでreply_idが0のトピックを取得し、そこからdate_createdによって並べ替えます。新しい返信がある場合はリストの先頭にトピックを表示
トピックのいずれかへの返信がある場合、そのトピックはリストの先頭に移動する必要があります。
質問どのように私は、トピックへの新しい返信があれば、そのトピックがリストに行くことを確認することができます。
現在のところ、それは新しい最後のポストの時間()データベースの
Array
(
[0] => Array
(
[title] => How to
[author] => demo
[author_post_time] => Tue Jun 13 , 2017 19:43:01 pm
[last_post_by] => demo
[latest_post_time] => Tue Jun 13 , 2017 19:43:01 pm
)
[1] => Array
(
[title] => How to install codeigniter
[author] => admin
[author_post_time] => Sat Jun 10 , 2017 23:26:48 pm
[last_post_by] => demo
[latest_post_time] => Tue Jun 13 , 2017 20:48:00 pm
)
)
イメージを持っているので、あなたが第二配列の項目が一番上にあるべきか、これまで二つのアイテムを持って見ることができるように私のvarダンプ
モデル
<?php
class Topic_model extends CI_Model
{
public function get_active_topics($fid)
{
$data = array();
$this->db->select('t.*, u.username');
$this->db->from('topics t');
$this->db->join('user u', 'u.user_id = t.user_id');
$this->db->where('t.reply_id', '0');
$this->db->order_by('t.date_created', 'desc');
$query = $this->db->get();
foreach ($query->result_array() as $topic_result)
{
$reply = $this->get_reply($topic_result['topic_id']);
// This $date1 just for display only as shown on image
$date1 = date('D M d', $topic_result['date_created']) . ' , ' . date('Y H:i:s a', $topic_result['date_created']);
// This $date2 just for display only as shown on image
$date2 = date('D M d', $reply['date_created']) . ' , ' . date('Y H:i:s a', $reply['date_created']);
$data[] = array(
'title' => $topic_result['title'],
'author' => $topic_result['username'],
'author_post_time' => $date1,
'last_post_by' => isset($reply['username']) ? $reply['username'] : $topic_result['username'],
'latest_post_time' => ($reply['reply_id'] > 0) ? $date2 : $date1,
);
}
return $data;
}
public function get_reply($reply_id)
{
$this->db->select('t.*, u.username');
$this->db->from('topics t');
$this->db->join('user u', 'u.user_id = t.user_id');
$this->db->where('t.reply_id', $reply_id);
$this->db->limit(1);
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->row_array();
}
return false;
}
}
TO
から
変更するには、トピックと返信のための1つまたは2つのテーブルを持っていますか? – Tpojka
@Tpojkaちょうど1つ。 – user4419336
これは2つのテーブルのジョブです。ブログ記事やコメントと同様に、1対多数の関係を持つ。 – Tpojka