Как выбрать из отношения «один ко многим» в CodeIgniter? - PullRequest
0 голосов
/ 10 декабря 2010

У меня есть несколько таблиц, к которым я пытаюсь получить доступ в CodeIgniter, и одна из них в основном представляет собой набор внешних ключей из других таблиц, большинство из которых представляют собой только два поля: уникальный идентификатор и имя.Таблица «кампаний», давайте назовем это, извлекает данные из других таблиц в форме идентификаторов этих таблиц (поскольку имена могут быть не уникальными).

Теперь я хочу отобразить «кампании»«данные в удобочитаемой форме, означающие, показывающие иностранные имена, а не идентификаторы.Я думаю, что это называется «присоединиться», но я не уверен на 100% в этом.Я проверил страницу MySql, и они сказали, что это на самом деле не то, для чего нужны внешние ключи, но я подумал, что вам нужны внешние ключи для объединения, так что я действительно сейчас более растерян.

Неужели я действительноиспользовать соединения и внешние ключи для этого?Заранее спасибо.

1 Ответ

2 голосов
/ 10 декабря 2010

Внешний ключ предоставляет ссылку на другую запись в той же или другой таблице (обычно последняя). Объединение использует общие данные в двух таблицах (иногда в одной и той же таблице) для обеспечения связи между ними.

Если у вас есть две таблицы, которые вы хотите объединить, и единственным общим фактором между этими двумя таблицами является третья таблица (та, которая содержит все внешние ключи), вам потребуется выполнить 2 объединения.

Пример

SELECT *.table1, *.table2 FROM table1
LEFT JOIN foreign_key_table ON foreign_key_table.id1 = table1.id
LEFT JOIN table2 ON foreign_key_table.id2 = table2.id
WHERE.....

В Codeignter:

$this->db->select('*.table1, *.table2');
$this->db->from('table1');
$this->db->join('foreign_key_table', 'foreign_key_table.id1 = table1.id');
$this->db->join('table2', 'foreign_key_table.id2 = table2.id');
$this->db->where('...');

Вы можете найти всю необходимую информацию здесь - http://codeigniter.com/user_guide/database/active_record.html

Надеюсь, это поможет.

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