Union внутри $this->get($table);

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 16 августа 2017 в 15:28
Добрый день.
Может быть кто подскажет как внутри
  1. $this->get($table);
использовать стандартный UNION запрос для объединения двух таблиц
Допустим есть функция, это упрощенная функция, чтобы просто понять логику, куда и как записывать UNION
  1.  
  2. public function getSearch($table, $like = false) {
  3. $this->filterLike('pole', $like);
  4. // и здесь дополнительно хочу сделать запрос UNION во вторую базу UNION SELECT `pole`, FROM `table2`
  5. $result = this->get($table);
  6. return $result;
  7. }
  8.  
  9.  
Куда копать, что смотреть. В документации ничего не нашёл((
#2 16 августа 2017 в 17:08
Alex,
А простой джойн не помогает?
#3 16 августа 2017 в 21:10
Alex, пример из модели контента, я думаю, поможет решить вашу задачу помощью join...

  1. public function getContentProps($ctype_name, $category_id=false){
  2.  
  3. $props_table_name = $this->table_prefix . $ctype_name . '_props';
  4. $bind_table_name = $this->table_prefix . $ctype_name . '_props_bind';
  5.  
  6. if ($category_id){
  7. $this->selectOnly('p.*');
  8. $this->join($props_table_name, 'p', 'p.id = i.prop_id');
  9. $this->filterEqual('cat_id', $category_id);
  10. $this->orderBy('ordering');
  11. $table_name = $bind_table_name;
  12. } else {
  13. $table_name = $props_table_name;
  14. }
  15.  
  16. return $this->get($table_name, function($item, $model){
  17. $item['options'] = cmsModel::yamlToArray($item['options']);
  18. return $item;
  19. });
  20.  
  21. }
#4 17 августа 2017 в 11:11
Спасибо, join понятен, но хочется разобраться именно с UNION.

zst
#5 17 августа 2017 в 12:05

Спасибо, join понятен, но хочется разобраться именно с UNION.

Alex

Можно и с UNION, только запрос сами будете писать.

  1. public function getSearch($table, $like = false) {
  2. $sql = "
  3. select pole1 from cms_poles
  4. where pole = '$like'
  5. UNION
  6. select pole2 from cms_poles2
  7. where pole2 = '$like2'
  8. "
  9.  
  10. $result = $this->db->query($sql);
  11. .......... тут перебор результата через while($item = $this->db->fetchAssoc($result)){
  12.  
  13. return $items;
  14. }
#6 21 августа 2017 в 16:31
Спа @SmartControl, Спасибо
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.