Как сделать так, чтобы активная запись во многих отношениях облегчала развитие в codeigniter? - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть такая таблица:

[Note]
[id]

[Note_Tag_list]
[Note_id]
[Tag_id]

[Tag]
[id]

Есть ли какая-либо активная запись, позволяющая мне ТОЛЬКО присоединиться к этим трем таблицам? Потому что каждый раз, когда я основываюсь на идентификаторе заметки, чтобы вернуться назад к записи note_tag_list, и использую запись списка тегов заметки, я чувствую себя действительно очень раздражающим.

Поток, который я использую:

//loop the note the user request
//get the note by id
//use the note id to get the note tag list, and return the array of note tag list
//loop the array of note tag list and use the tag id to quest the tag

Как мне сделать это проще?

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Может быть, вы можете попробовать datamapper :)

0 голосов
/ 02 июля 2017

Я знаю, что это старый вопрос, но в любом случае я отвечу на него всем, кто столкнется с такой же проблемой в будущем.

вам нужно использовать запрос JOIN для соединения нескольких таблиц с использованием отношения первичного и внешнего ключей.

Код для получения всех записей

$q = $this->db
             ->select()
             ->from('Note AS n')
             ->join('Note_Tag_list AS n_t_l', 'n_t_l.Note_id = n.id', 'left')
             ->join('Tag AS t', 't.id = n_t_l.Tag_id', 'left')
             ->get();

Код для получения только определенных записей (с помощью предложения WHERE)

$where = array(
    'n.id' => **provide note id here**
);    

$q = $this->db
            ->select()
            ->from('Note AS n')
            ->join('Note_Tag_list AS n_t_l', 'n_t_l.Note_id = n.id', 'left')
            ->join('Tag AS t', 't.id = n_t_l.Tag_id', 'left')
            ->where($where)
            ->get();

Для получения дополнительной информации ознакомьтесь с документами codeigniter. Конструктор запросов Codeigniter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...