Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Доброе время суток уважаемые форумчане, В kohana, есть замечательная штука получения строки, по id Например: Код: php 1. Вопрос: Можно каким –либо образом переделать соответствующую модель, чтоб приведенный выше код, возвращал запрос: Код: sql 1. 2. Просмотрев код «factory» - там можно задавать только массив с полей, для одной строки. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:06 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
А то получается так, что для получения инф-ции по двум строкам из одной таблицы, мне приходится обращаться 2 раза к БД: Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:29 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
не туда смотрел! $sub_sql = DB::select('main_dep_id')->from('departments')->where('id','=',2); ORM::factory('table')->where('id','=',2)->or_where('id','IN',DB::expr($sub_sql))->find_all(); не ручаюсь за правильность синтаксиса..но както так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:59 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
только вторую строку немного переделал Код: sql 1. 2. В результате она выглядит следующим образом (при $id=24): Код: sql 1. 2. 3. 4. 5. запрос рабочий. В "phpmyadmin" проверял. Вывод на экран переменной "$sub_sql" - все отлично (н-р: " SELECT `main_dep_id` FROM `departments` WHERE `id` = 24 ") Но при выводе "$sub_sql1", в переменной, почему-то не правильно вычисляется DB::expr($sub_sql) SELECT `department`.`id` AS `id`, `department`.`name` AS `name`, `department`.`main_dep_id` AS `main_dep_id`, FROM `departments` AS `department` WHERE `id` = 24 OR `id` = '1 ' в то время, когда `id` должно равнятся "23" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:12 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Kos-2010только вторую строку немного переделал Код: sql 1. 2. В результате она выглядит следующим образом (при $id=24): Код: sql 1. 2. 3. 4. 5. запрос рабочий. В "phpmyadmin" проверял. Вывод на экран переменной "$sub_sql" - все отлично (н-р: " SELECT `main_dep_id` FROM `departments` WHERE `id` = 24 ") Но при выводе "$sub_sql1", в переменной, почему-то не правильно вычисляется DB::expr($sub_sql) SELECT `department`.`id` AS `id`, `department`.`name` AS `name`, `department`.`main_dep_id` AS `main_dep_id`, FROM `departments` AS `department` WHERE `id` = 24 OR `id` = '1 ' в то время, когда `id` должно равнятся "23" во первых никогда не пиши id = (select)... лучше всётаки id IN (select) ибо там может быть не одна строчка результата. нащот DB::expr насколько я понмю..туда ты пишешь текст, который будет как есть тоесть where('id','=','field2') даст в результате `id` = 'field2' ---равно константе where('id','=',DB::expr('field2')) - `id` = field2 ---тоесть значению другого поля. может єто не екпр а другой метод...я перепутал, но суть в том, чтобы оно не пощитало сабкфери просто текстом и не обрамило в кавычки... вот какая у меня была идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 11:14 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Спасибо, про "IN" и "=" я помню (но в моем случае привязанная запись всего одна - всегда). Вот только не понятно, почему "DB::expr($sub_sql)" (поищем другой метод) в "$sub_sql1" - не правильный результат выдает. Может в дебаге NetBeans, удастся отследить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Ну я так и не понял в чом не правильность подзапроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 19:36 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Подзапрос в отдельности работает замечательно: Код: sql 1. Результат: Код: php 1. А если работает в составном запросе: Код: sql 1. Подзапрос выдает результатом "1" , а не "23" (наверно обращатся к нему нужно по другому) Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 19:49 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Оставил модуль ORM в покое и воспользовался старым добрым DB: Код: sql 1. 2. 3. - :-) и сразу получил все, что хотел, в виде массива. Осталось научиться добавлять результатам в массиве имена, а то [0] и [1] как-то не очень? Ведь DB и ORM по сути одинаковы. Это от вкуса уже зависит, как обращаться к БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2014, 17:12 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Kos-2010Оставил модуль ORM в покое и воспользовался старым добрым DB: Код: sql 1. 2. 3. - :-) и сразу получил все, что хотел, в виде массива. Осталось научиться добавлять результатам в массиве имена, а то [0] и [1] как-то не очень? Ведь DB и ORM по сути одинаковы. Это от вкуса уже зависит, как обращаться к БД ты лудше всятаки разберись в чом проблема... насколько я понмю, метод execute() возвращает обьект Database_result и у этого обьекта всегда в поле query или както так, храниться строка - каким имено запросом в базу получен этот результат..это строка уже со всеми подстановками...именно то что пошло в базу! посмотрев на неё точно поймёшь где что не так. наравне с методом as_array() там есть метод получения асоциативного масива... плюс в методе селект можно задавать выборку select('f1','f2',...,'fn') а можно select(array('field1','psevdonim_field1_inresult'),array(..)..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 11:37 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
чтото ты напутал. кохана была на локалхосте... попробовал. 1 Код: php 1. 2. 3. 2 Код: php 1. 2. 3. 4. 5. 6. 7. 8. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: php 1. 2. 3. 4. получаем тоже что ожидаем...два масива для двух записей!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2014, 12:25 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Да, получилось, спасибо. Ошибка была в пропуске команды выполнения: у меня было: Код: sql 1. а вы написали: Код: sql 1. т.е. нужно было запрос выполнить и вернуть значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2014, 19:24 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
А еще такой один вопрос: в результате всей этих действий (этого запроса), у меня получается многомерный массив, в котором: первый ключ - это номер строки (всего - [0] и [1]), ну а второй (подмассив) - это собственно содержимое строки. Как можно преобразовать первый ключ, например в "id" строки? Или лучше присваивать подмассивам имена? (а то массивы местами переставляются (при выполнении запроса), и на web страничке, получается путаница данных) Только без предварительного преобразования в другой массив, например ($one_department_a2 - результат запроса): Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 02:54 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Kos-2010alex564657498765453, Да, получилось, спасибо. Ошибка была в пропуске команды выполнения: у меня было: Код: sql 1. а вы написали: Код: sql 1. т.е. нужно было запрос выполнить и вернуть значение я думаю ключевой момент это палочки вместо точек??? они зачем. $sub_sql->compile() насколько я помню, все что делаеться билдквери при преобразовании в строку вызываеться метод магический __тустринг который и вызывает компайл...это для наглядности я написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:49 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Kos-2010А еще такой один вопрос: в результате всей этих действий (этого запроса), у меня получается многомерный массив, в котором: первый ключ - это номер строки (всего - [0] и [1]), ну а второй (подмассив) - это собственно содержимое строки. Как можно преобразовать первый ключ, например в "id" строки? Или лучше присваивать подмассивам имена? (а то массивы местами переставляются (при выполнении запроса), и на web страничке, получается путаница данных) Только без предварительного преобразования в другой массив, например ($one_department_a2 - результат запроса): Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. пример кода не понятен 2. рузультат запроса - строкИ, тоесть масив елементов, каждый елемент строка строка - это набор полЕЙ, тоесть строка это масив елементов , где каждый елемент поле... а в каком виде оно должно было вернуть как не многомерный масив? 3 помниться там есть какойто метод - но это форичем перестройка масива, чтобы индексами строк были не 0 1 2 3 ... а значение определёного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:53 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
плин. а документацию то иногда полезно читать... к ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 12:55 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
alex564657498765453 я думаю ключевой момент это палочки вместо точек??? они зачем. Да, "compile()", тут ни причем (странно в какой-то момент мне показалось, что это тоже тут причем - глюки наверное), а вот в палочках - вы правы, да и не палочки это вовсе, а знак конкантинации (я раньше в Interbase и Firebird запросы писал, вот с тех пор и привязалось) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:11 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
alex564657498765453...пример кода не понятен Да пример не нагляден. Все просто: этот массив я передаю в view, а поскольку запрос получает инф. о двух отделах (2 строки - 2 подмассива [0] и [1]) основном и подчиненном, то мне необходимо знать, какой подмассив (они иногда местами меняются) за какой отдел отвечает. чтоб допустим я правильно выводил инф. в view о основном отделе, например: Код: html 1. 2. 3. 4. и подчиненном отделе: Код: html 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 15:29 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
Ну так по ссылке прочитал как вызываеться метод as_array() ??? плюс сортировать можно, плюс можно обработать масив и уже во вьюху передавать отдельно переменные две $row_department , $row_sub_department ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:30 |
|
||
|
[kohana] Возможность объединения запроса в ORM::factory
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Да уже прочел, но вчерась уже обработал массив (код вверху) - все работает :-). Можно и две переменных, можно и один двумерный массив, и во вьюхе уже обращаться к определенному Код: html 1. Я просто думал можно это как-то в запросе устроить , чтоб не возиться с переработкой результата (массива) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:50 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38783554&tid=1462316]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 343ms |

| 0 / 0 |
