Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="mayar"]Уважаемые специалисты, подксажите мне неразумному. Как происходит комбинирование цельного массива из нескольких SQL-запрософ, порождаемых сложным find() ? Например, имеем вот такой find(): [code] $this->Site->find( 'all', array ( 'fields' => array('Site.id'), 'conditions' => array('Site.site' => '3333'), 'contain' => array ( 'Job' => array( 'fields' => array ('Job.site_id'), 'conditions' => array ('Job.site_id' => 3), 'JobComment' => array ( 'fields' => array ('JobComment.comment'), 'conditions' => array ('JobComment.trouble' => 1) ) ) ) ) ) [/code] Он делает вот такие запросы: [code] 1 SELECT `Site`.`id` FROM `sites` AS `Site` WHERE `Site`.`site` = '3333' 2 SELECT `Job`.`site_id`, `Job`.`id` FROM `jobs` AS `Job` WHERE `Job`.`site_id` = (3) 3 SELECT `JobComment`.`comment`, `JobComment`.`id`, `JobComment`.`job_id` FROM `job_comments` AS `JobComment` WHERE `JobComment`.`trouble` = 1 AND `JobComment`.`job_id` IN (3, 5, 10, 11, 15) [/code] В результате получаем 3 таблички: [code] Sites: ------- id 3 Jobs: ------ site_id id 3 3 3 5 3 10 3 11 3 15 job_comments: ------------------ comment id job_id aaaaaaa 1 10 bbbbbbb 3 10 cccccccc 4 3 [/code] Каким образом после этого мы получаем вот такой массив: [code] Array ( [0] => Array ( [Site] => Array ( [id] => 3 ) [Job] => Array ( [0] => Array ( [site_id] => 3 [id] => 3 [JobComment] => Array ( [0] => Array ( [comment] => aaaaaaa [id] => 4 [job_id] => 3 ) ) ) [1] => Array ( [site_id] => 3 [id] => 5 [JobComment] => Array ( ) ) [2] => Array ( [site_id] => 3 [id] => 10 [JobComment] => Array ( [0] => Array ( [comment] => bbbbbb [id] => 1 [job_id] => 10 ) [1] => Array ( [comment] => ccccccc [id] => 3 [job_id] => 10 ) ) ) [3] => Array ( [site_id] => 3 [id] => 11 [JobComment] => Array ( ) ) [4] => Array ( [site_id] => 3 [id] => 15 [JobComment] => Array ( ) ) ) ) ) [/code] Как?[/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
mayar
Добавлено: 21 Авг 2009 10:58:17
Заголовок сообщения:
Да это ясно... мне интересно, как из 3х таблиц методами PHP получить такой вот массив, как я в конце привел.
Есть 3 массива: Sites, Jobs, Job_comments
Как их комбинировать в один большой массив?
Set::combine, Set::insert ?
michas
Добавлено: 20 Авг 2009 19:22:31
Заголовок сообщения:
Из-за связей и recursive
mayar
Добавлено: 20 Авг 2009 15:51:26
Заголовок сообщения: Как find() формирует массив?
Уважаемые специалисты, подксажите мне неразумному. Как происходит комбинирование цельного массива из нескольких SQL-запрософ, порождаемых сложным find() ?
Например, имеем вот такой find():
Код:
$this->Site->find(
'all',
array (
'fields' => array('Site.id'),
'conditions' => array('Site.site' => '3333'),
'contain' => array (
'Job' => array(
'fields' => array ('Job.site_id'),
'conditions' => array ('Job.site_id' => 3),
'JobComment' => array (
'fields' => array ('JobComment.comment'),
'conditions' => array ('JobComment.trouble' => 1)
)
)
)
)
)
Он делает вот такие запросы:
Код:
1 SELECT `Site`.`id` FROM `sites` AS `Site` WHERE `Site`.`site` = '3333'
2 SELECT `Job`.`site_id`, `Job`.`id` FROM `jobs` AS `Job` WHERE `Job`.`site_id` = (3)
3 SELECT `JobComment`.`comment`, `JobComment`.`id`, `JobComment`.`job_id` FROM `job_comments` AS `JobComment` WHERE `JobComment`.`trouble` = 1 AND `JobComment`.`job_id` IN (3, 5, 10, 11, 15)
В результате получаем 3 таблички:
Код:
Sites:
-------
id
3
Jobs:
------
site_id id
3 3
3 5
3 10
3 11
3 15
job_comments:
------------------
comment id job_id
aaaaaaa 1 10
bbbbbbb 3 10
cccccccc 4 3
Каким образом после этого мы получаем вот такой массив:
Код:
Array
(
[0] => Array
(
[Site] => Array
(
[id] => 3
)
[Job] => Array
(
[0] => Array
(
[site_id] => 3
[id] => 3
[JobComment] => Array
(
[0] => Array
(
[comment] => aaaaaaa
[id] => 4
[job_id] => 3
)
)
)
[1] => Array
(
[site_id] => 3
[id] => 5
[JobComment] => Array
(
)
)
[2] => Array
(
[site_id] => 3
[id] => 10
[JobComment] => Array
(
[0] => Array
(
[comment] => bbbbbb
[id] => 1
[job_id] => 10
)
[1] => Array
(
[comment] => ccccccc
[id] => 3
[job_id] => 10
)
)
)
[3] => Array
(
[site_id] => 3
[id] => 11
[JobComment] => Array
(
)
)
[4] => Array
(
[site_id] => 3
[id] => 15
[JobComment] => Array
(
)
)
)
)
)
Как?
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».