CodeIgniter Active Record Queries с дополнительными запросами - PullRequest
1 голос
/ 03 апреля 2012

Вопрос:

Я действительно пытаюсь придерживаться использования ActiveRecord, а не использования прямого SQL .. Может кто-нибудь помочь мне преобразовать это в activerecord?

Попытка получить адрес электронной почты и имя контакта из другой таблицы. Таблица map_userfields - это один ко многим, несколько строк на p.id. один ряд на p.id на uf.fieldid.

см. Этот снимок экрана для ссылки на таблицу map_userfields:

enter image description here

Текущий неактивный запрос записи

SELECT
p.id,
(SELECT uf.fieldvalue FROM map_userfields uf WHERE uf.pointid = p.id AND uf.fieldid = 20) As ContactName,
(SELECT uf.fieldvalue FROM map_userfields uf WHERE uf.pointid = p.id AND uf.fieldid = 31) As ContactEmail
FROM
map_points p
WHERE
/** $pointCategory is an array of categories to look for **/
p.type IN($pointCategory)

Примечание: Я использую CodeIgniter 2.1.x, MySQL 5.x, php 5.3

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

Активная запись CodeIgniter не поддерживает готовые подзапросы. Вам нужно будет загрузить класс CodeIgniter Subqueries .

В вики CodeIgniter есть статья о том, как выполнять подзапросы .

1 голос
/ 03 апреля 2012

Вы можете выбрать все, что вам нужно, с помощью activeRecords CI, если вы скажете CI не анализировать вашу строку

$this->db->select('p.id,
(SELECT uf.fieldvalue FROM map_userfields uf WHERE uf.pointid = p.id AND uf.fieldid = 20) As ContactName,
(SELECT uf.fieldvalue FROM map_userfields uf WHERE uf.pointid = p.id AND uf.fieldid = 31) As ContactEmail
',TRUE);
$this->db->from('map_points p');
$this->db->where_in('p.type',$pointCategory);
$q = $this->db->get();
0 голосов
/ 07 апреля 2012

Подзапросы действительно работают в codeigniter, но есть небольшой взлом. Я обнаружил, что в system / database / DB_active_rec.php есть две функции с именами _compile_select и _reset_select. Если вы удалите защищенное слово из обоих, вы сможете использовать эти функции для подзапросов Вот руководство по использованию

http://heybigname.com/2009/09/18/using-code-igniters-active-record-class-to-create-subqueries/

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