За последние 24 часа нас посетили 18032 программиста и 1652 робота. Сейчас ищут 1688 программистов ...

Цикл OR в запросе?

Тема в разделе "PHP и базы данных", создана пользователем ghostcom, 19 мар 2018.

Метки:
  1. ghostcom

    ghostcom Активный пользователь

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Всем привет! Как правильно сделать такую конструкцию и возможно ли?

    PHP:
    1. ......
    2.     $query->select('*');
    3.     $query->from('table');
    4.     for ( $j=0; $j<23; $j++ ) {
    5.         $hour = sprintf( '%02d', $j );
    6.         if ( $j == 00 ){ $query->where( 'hour'.$hour.' = '.$this->getItem()->id .' OR ') }
    7.         else { ->where( 'hour'.$hour.' = '.$this->getItem()->id .' OR ' ) }
    8.         if ( $j == 23 ){ ->where( 'hour'.$hour.' = '.$this->getItem()->id ); }
    9.     }
    10. .....
     
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    ты про то что не определился с запросом? не проще сразу сконструировать переменную с запросом а потом его запросить? хотя это не по оопшному
    или про то статистический метод?
    или про то что ->where() должен сразу сложить строки
     
  3. ghostcom

    ghostcom Активный пользователь

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Просто хотел избавится от такой городьбы:D (Уменьшить код!!!)
    PHP:
    1. $query->where( ( 'hour00 = '.$this->getItem()->id), ' OR' )
    2.               ->where( ( 'hour02 = '.$this->getItem()->id), ' OR' )
    3.               ->where( ( 'hour03 = '.$this->getItem()->id), ' OR' )
    4.               ->where( ( 'hour04 = '.$this->getItem()->id), ' OR' )
    5.               ->where( ( 'hour05 = '.$this->getItem()->id), ' OR' )
    6.               ->where( ( 'hour06 = '.$this->getItem()->id), ' OR' )
    7.               ->where( ( 'hour07 = '.$this->getItem()->id), ' OR' )
    8.               ->where( ( 'hour08 = '.$this->getItem()->id), ' OR' )
    9.               ->where( ( 'hour09 = '.$this->getItem()->id), ' OR' )
    10.               ->where( ( 'hour10 = '.$this->getItem()->id), ' OR' )
    11.               ->where( ( 'hour11 = '.$this->getItem()->id), ' OR' )
    12.               ->where( ( 'hour12 = '.$this->getItem()->id), ' OR' )
    13.               ->where( ( 'hour13 = '.$this->getItem()->id), ' OR' )
    14.               ->where( ( 'hour14 = '.$this->getItem()->id), ' OR' )
    15.               ->where( ( 'hour15 = '.$this->getItem()->id), ' OR' )
    16.               ->where( ( 'hour16 = '.$this->getItem()->id), ' OR' )
    17.               ->where( ( 'hour17 = '.$this->getItem()->id), ' OR' )
    18.               ->where( ( 'hour18 = '.$this->getItem()->id), ' OR' )
    19.               ->where( ( 'hour19 = '.$this->getItem()->id), ' OR' )
    20.               ->where( ( 'hour20 = '.$this->getItem()->id), ' OR' )
    21.               ->where( ( 'hour21 = '.$this->getItem()->id), ' OR' )
    22.               ->where( ( 'hour22 = '.$this->getItem()->id), ' OR' )
    23.               ->where( 'hour23 = '.$this->getItem()->id);
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нафига тебе аж 24 поля?
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    это ужасно. если автоматизировать бардак получишь не порядок, а автоматизированный бардак.
    короче, что-то не так с твоим алгоритмом.
     
  6. ghostcom

    ghostcom Активный пользователь

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Да это я понимаю( Пришлось так сделать из за всяческих фильтров и редактировании! Вся суть в бронировании помещения по часам. Получается если сделать один столбец с массивом, то надо дернуть все записи проверить массивы, что то сделать завернуть и перезаписать всю цепочку массива (а если записей много). А так я получаю уже отсеянные записи. Не знаю, но как по мне (а я делетант и в добавок самоучка) хот код и ужасен, а в плане производительности и скорости загрузки я выиграю. Нет?

    А кода получается даже меньше. Вот я и спросил. Можно ли циклом прописать запрос к бд?
    --- Добавлено ---
    А какие ваши предложения?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пропиши циклом, да
     
  8. ghostcom

    ghostcom Активный пользователь

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2
    Пробовал выдает ошибки синтаксиса
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    исправь ошибки или пиши сразу без ошибок! :D
     
  10. ghostcom

    ghostcom Активный пользователь

    С нами с:
    17 фев 2016
    Сообщения:
    92
    Симпатии:
    2