Основная концепция CodeIgniter / SQL - замена идентификатора в одной таблице данными из другой - PullRequest
0 голосов
/ 12 февраля 2012

Я взломал CodeIgniter примерно неделю назад, только потому, что у меня нет возможности понимать RoR.Мне удалось создать несколько элементарных моделей, представлений и контроллеров, но я сейчас нахожусь в точке, где я должен начать учитывать тот факт, что я использую несколько моделей.

Мой вопрос может быть связан с базовым SQL,но я ожидаю, что в CodeIgniter есть функциональность, позволяющая заменять возвращаемые строки определенными полями данных информацией из других таблиц.Если бы я знал, как эта концепция называется в SQL, я бы хотя бы знал, что искать в Документах, но я только начинающий.Я хотел бы, по крайней мере, иметь здесь некоторые базовые знания, чтобы я мог прочитать подробности.

Например, допустим, у меня есть таблица компаний (модель компании), которая имеет только два поля, 'id'установить в качестве первичного ключа и' Company_name ', которое является varchar.Кроме того, допустим, у меня есть таблица магазинов (модель магазина), в которой есть четыре поля, такие как «адрес», «идентификатор» (первичный ключ) и «company_id», который является индексом в таблице компаний.

компании могут быть что-то вроде:

ID    Company_name
------------------------------------------------
1     CompanyA
2     CompanyB
3     CompanyC

Магазины могут быть что-то вроде:

ID    Store_name   Address         Company_ID 
------------------------------------------------
1     StoreA       12 Main St.     1
2     StoreB       33 First Ave.   1
3     StoreC       9 Broad Rd.     2
4     StoreD       873 Wide Blvd.  3
5     StoreE       8103 Water St.  1

Где поле CompanyID связывает таблицу обратно к таблице компаний.

Если я выполню базовый запрос в CodeIgniter, чтобы вернуть все «хранилища» как:

$this->db->get('stores');

, я смогу просматривать строку за строкой, но поле Company_ID все равно будет просто индексным значением.Есть ли способ выполнить запрос, чтобы поле Company_ID автоматически заменялось соответствующим названием компании из таблицы компаний в возвращаемых результатах?Идея состоит в том, что я хочу создать результирующую таблицу, которая будет выглядеть следующим образом:

Store Name    Address           Company Name
------------------------------------------------
StoreA        12 Main St.       CompanyA
StoreB        33 First Ave.     CompanyA
StoreC        9 Broad Rd.       CompanyB
StoreD        373 Wide Blvd.    CompanyC
StoreE        8103 Water St.    CompanyA

Простой пример из реальной жизни - магазины сети быстрого питания, принадлежащие материнской компании, или что-то в этом роде.

Не уверен, как еще это объяснить.: /

1 Ответ

0 голосов
/ 12 февраля 2012

То, что вы ищете, это соединение SQL. Вы можете сделать это в CodeIgniter следующим образом.

$this->db->select("stores.Store_name, stores.Address, companies.Company_name");
$this->db->from("stores");
$this->db->join("companies", "companies.ID=stores.Company_ID");
$query = $this->db->get();

Лично я предпочитаю сам написать запрос.

$query = $this->db->query("select stores.Store_name, stores.Address, companies.Company_name from stores inner join companies on companies.ID=stores.Company_ID");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...